目录
题目链接:三数之和
思路分析:排序+双指针
细节处理
画图解析
代码
题目链接:四数之和
思路分析: 排序+双指针
细节处理
画图解析
代码
1.去重
找到一个符合的结果后,left和right指针要跳过重复的元素
当使用完一次双指针算法后,a也需要跳过重复的元素
2.不漏
找到一种结果后,不要“停”,要缩小区间,继续往下寻找
3.小改进
如果a大于0,那么之后的数相加不可能为0(因为前面已经排序了),所以如果a大于0就可以直接break
public List
> threeSum(int[] nums) { Arrays.sort(nums); List
> ret=new ArrayList<>(); int n= nums.length; for (int i = 0; i < n; ) { //小改进 if(nums[i]>0){ break; } int left=i+1,right=n-1,flag=-nums[i]; while (left
flag){ right--; } else if (sum (Arrays.asList(nums[i],nums[left],nums[right]))); //不漏 left++; right--; //去重 while (left
1.去重
找到一个符合的结果后,left和right指针要跳过重复的元素
当使用完一次双指针算法后,a也需要跳过重复的元素
当使用完一次双指针算法后,b也需要跳过重复的元素
2.不漏
找到一种结果后,不要“停”,要缩小区间,继续往下寻找
public List
> fourSum(int[] nums, int target) { Arrays.sort(nums); List
> ret=new ArrayList<>(); int n= nums.length; for (int i = 0; i
flag){ right--; } else if (sum (Arrays.asList(nums[i],nums[j],nums[left],nums[right]))); //不漏 left++; right--; //去重 while (left
本文内容到此结束了,
如有收获欢迎点赞收藏关注✔️,您的鼓励是我最大的动力。
如有错误疑问欢迎各位指出。
主页:发呆的百香果子_spring,软件测试-CSDN博客求同存异,与光同尘