今天在leetcode刷每日一题,看到题目为四数之和,想起之前做过两数之和,但四数没有什么思路,之后学习了一下三数之和,发现四数之和算法与三数之和非常相似,因此把几数之和写入博客中,记录学习过程。
两数之和
思路:hashmap
遍历数组 nums,i 为当前下标,每个值都判断map中是否存在 target-nums[i] 的 key 值,
如果存在则找到了两个值,如果不存在则将当前的 (nums[i],i) 存入 map 中,
继续遍历直到找到为止如果最终都没有结果return null
public int[] twoSum(int[] nums, int target) {
HashMap<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};
}else{
map.put(nums[i], i);
}
}
return null;
}
三数之和
思路: 参考三数之和题解
难点:排除重复解(3/4都一样)
public List<List<