java练题实践(两数之和)
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
for(int i = 0;i < nums.length-1;i++){
for(int j = (i+1);j<nums.length;j++){
if(nums[i]+nums[j] == target){
result[0]=i;
result[1]=j;
break;
}
}
}
return result;
}
}
上面就是我的代码,我在这里出现的问题***就是 break 的使用***
我出错的代码就是
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
for(int i = 0;i < nums.length-1;i++){
for(int j = (i+1);j<nums.length;j++){
if(nums[i]+nums[j] == target){
result[0]=i;
result[1]=j;
}
break;
}
}
return result;
}
}
这样会导致一个结果就是里层循环只执行一次就结束了。
这里的就是提供的一个答案代码
class Solution {
public int[] twoSum(int[] nums, int target) {
int n = nums.length;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
return new int[0];
}
}
下面就总结一下
break , continue , return三者的使用区别
**break:**强行退出循环,不执行循环中剩余的语句,如果嵌套循环的话,退出最里面的循环。
**continue:**停止执行当前的循环,然后退回到循环起始处继续下一次的循环。
**return:**一方面指定一个方法返回什么值(如果有返回值),另一方面它会导致当前的方法退出,并返回那个值。
还有就是,之前好像没有看到过下面这种数组的方式
new int[]{i, j}