Q15 3Sum

问题:here
代码:here
思路:
两个解法:1 把所有的三元组合遍历,并排除重复的;2 先然一个指针指向一个数,然后让后面的两个指针所指向的数加起来等于第一个数。
第一种方法虽然简单,但是提交的结果超时了。
第二种方法的而关键在于后面两个指针的遍历。首先我们将输入的nums排序,然后我们让第一个指针i从nums的第一个数遍历到倒数第三个;后面两个指针中,low初始化为i+1high初始化为nums.size()-1,然后我们让lowhigh往中间移动。移动的条件如下:
nums[i]+num[low]+nums[high] == 0 –> low++, high–
nums[i]+num[low]+nums[high] > 0 –> low++
nums[i]+num[low]+nums[high] < 0 –> high–
当然,为了避免duplicate triplets,我们需要跳过重复的数,不管是ilowhigh

猜你喜欢

转载自blog.csdn.net/m0_37518259/article/details/80686354