解法:两次循环数组,以第一次遍历的数为节点,找到对应的target -x 的值的下标。
我的第一次提交的答案,运行成功了但是重复利用了一个值的情况。
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i =0 ; i < nums.length ; i++){
for (int j =0 ; j < nums.length ; j++){
if (nums[i] + nums[j] == target){
return new int[i , j] {};
}
}
}
System.out.print("no numbers exits");
}
}
因此修改结果如下:
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i =0 ; i < nums.length ; i++){
for (int j =i+1 ; j < nums.length ; j++){
if (nums[i] + nums[j] == target){
return new int[i , j] {};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
注意点:
1、题目给的条件的是返回一个二维数组,所以你的返回值要是这样定义的
return new int[] { i, j };
2、当数组当中没有对应的值的时候,题目没有给相应的返回提示,但我想应该不是 返回一个 [0 , 0] ,这里参照了力扣的官方解法
用到
IllegalArgumentException
非法数据 异常 ,意思是找不到 对应的数据 。