- Two Sum
Example:Given nums=[2,7,11,15],target=9,
nums[0]+nums[1]=9;
return [0,1]
思路:排序后,双指针遍历,可以去重1
while (i < nums.length - 1 && nums[i] == nums[i + 1]) i++;
或者存入HashMap<nums[i],i>,查找target-nums[i],
- 3Sum
Example:Given nums=[-1, 0, 1, 2, -1, -4],
return
[
[-1,-,1]
[-1,-1,2]
]
思路:固定第一个数字i,遍历剩余的,i++;
- 4Sum
Example:Given nums=[1, 0, -1, 0, -2, 2],target=0.
return :
[
[-1,0,0,1]
[-2,-1.1,2]
[-2,0,0,2]
]
思路:在三个数的基础上多了一个循环。注意可以进行优化速度
排序后,nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target;i++;
直接结束nums[i]+nums[j]+nums[nums.length-2]+nums[nums.length-1]<target;continue;
直接进入下一轮循环,