1.两数之和Java题解记录
先用最原始的方法试了一下,可以!
class Solution {
public int[] twoSum(int[] nums, int target) {
int l = nums.length;
int[] ans = new int[2];
for(int i=0; i<l; i++){
for(int j=i+1; j<l; j++){
if(target == nums[i]+nums[j]){
ans[0] = i;
ans[1] = j;
}
}
}
return ans;
}
}
但结果很差。。。
寻找了一下高级方法,重新实现一下
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
int l = nums.length;
for(int i=0; i<l; i++){
if(map.containsKey(target-nums[i])){
return new int[]{map.get(target-nums[i]),i};
}
map.put(nums[i],i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
一次哈希,效果显著;
问题:在使用哈希会多一个异常分支,如果没有这个异常分支会报错:error: missing return statement