3 SUM
双指针只需要两处注意,
(1) check nums[i] 的等值不要重复计算
(2) nums[j] nums[k] 的等值在找到pair的时候不要重复计算。
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
nums.sort()
res =[]
n = len(nums)
for i in range(n-2):
if i == 0 or nums[i] != nums[i-1]:
j = i+1
k = n-1
target = -nums[i]
while j < k:
curr = nums[j] + nums[k]
if curr < target:
j+=1
elif curr > target:
k-=1
else:
res.append([nums[i],nums[j],nums[k]])
while j < n-1 and nums[j]== nums[j+1]:
j+=1
while k > 0 and nums[k] == nums[k-1]:
k-=1
j+=1
k-=1
return res
Last updated
Was this helpful?