三数之和
leetcode-15 来源 https://leetcode-cn.com/problems/3sum/
思路
排序预处理后,设置两个指针i,j 其中j = i + 1, i 遍历数组,剩下一个元素用二分法查找;
my ugly code
|
|
总时间复杂度 O(n^2)的复杂度;
高手思路赏析
解题思路
- 标签:数组遍历 首先对数组进行排序,排序后固定一个数 nums[i],再使用左右指针指向 nums[i]后面的两端,数字分别为 nums[L]和 nums[R],计算三个数的和 sum判断是否满足为 0,满足则添加进结果集 如果 nums[i]大于 0,则三数之和必然无法等于 0,结束循环 如果 nums[i]= nums[i-1],则说明该数字重复,会导致结果重复,所以应该跳过 当 sum == 0 时,nums[L] = nums[L+1] 则会导致结果重复,应该跳过,L++ 当 sum = 0 时,nums[R] = nums[R−1] 则会导致结果重复,应该跳过,R– 时间复杂度:O(n^2) ,n 为数组长度
|
|