一、两数之和的解法
第一种解法(暴力法)
两次循环,nums[i]+nums[j]==target;用这个条件判断,并且输出即可。
public static int[] twoSum(int[] nums, int target) {
for(int i = 0;i<nums.length-1;i++){
for(int j = i+1;j<nums.length;j++){
if(nums[i]+nums[j] == target){
return new int[] {i,j};
}
}
}
return new int[0];
}
第二种解法 用Map集合
具体解法:判断target-nums[i]是不是在map,如果在map里,直接返回对应的下标值。否则,将这个数添加到map集合中。如果上述条件不成立,返回空。
public static int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if(map.containsKey(target-nums[i])){
return new int[] {map.get(target-nums[i]),i};
}
map.put(nums[i],i);
}
return new int[0];
}