题目要求:
分析:
暴力法就不说了。
这里利用HashMap做会很爽。
注意这里的key和value是倒的。即:nums数组中的值是key,而nums数组的index是其对应的value.
代码如下所示:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i ++) {
int complement = target - nums[i];
if(map.containsKey(complement)) {
return new int[] {map.get(complement), i};
}
map.put(nums[i], i);
}
/*if(nums == null || nums.length == 0) {
return null;
}*/
return null;
}
}
注意:
在官方给出的解析中,最后是抛出了一个IllegalArgumentException(非法数据)异常:
throw new IllegalArgumentException("不存在!");
这种处理方式更专业。