三数之和
目录
三数之和
题目:
https://leetcode-cn.com/problems/3sum/solution/
思路:
第一眼看就想到了用双指针,注意重复数值的处理问题,算是一个滑动窗口问题
代码:
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
= []
res
if len(nums) < 3:
return []
nums.sort()
for i, num in enumerate(nums):
if num > 0:
return res
if i > 0 and nums[i] == nums[i-1]:
continue
= i+1, len(nums) - 1
left, right
while left < right:
= nums[i] + nums[left] + nums[right]
temp
if temp == 0:
res.append([nums[i], nums[left], nums[right]])
while left < right and nums[right-1] == nums[right]:
-= 1
right
while left < right and nums[left+1] == nums[left]:
+= 1
left
+= 1
left
-= 1
right
if temp > 0:
-=1
right
if temp < 0:
+= 1
left
return res