Leetcode Hot 100 三数之和
思路
对数组先排序,然后使用双指针法进行,并且整个过程需要把握去重的逻辑
代码
class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:if not nums:return []nums.sort() #去重都需要排序res=[]for i in range(len(nums)):if i>0 and nums[i]==nums[i-1]:continue#重复的时候不用管left=i+1right=len(nums)-1while left<right:#等于就没三个数了s=nums[i]+nums[left]+nums[right]if s<0:left+=1elif s>0:right-=1else:res.append([nums[i],nums[left],nums[right]])#添加了之后还要继续去重#去重逻辑应该放在找到第一个三元组后,对left和right进行去重while left<right and nums[left]==nums[left+1]:left+=1while left<right and nums[right]==nums[right-1]:right-=1#指针一起收缩left+=1right-=1return res