https://leetcode.com/problems/3sum/#/description
class Solution(object):
def match(self, nums, ind0):
ind1=ind0+1
ind2=len(nums)-1
res=[]
while ind1<len(nums)-1 and ind2>ind1:
if nums[ind1]+nums[ind2]>-nums[ind0]:
ind2-=1
else:
if nums[ind1]+nums[ind2]==-nums[ind0]:
res.append([nums[ind0],nums[ind1],nums[ind2]])
while ind1<len(nums)-1 and nums[ind1]==nums[ind1+1]: ind1+=1
ind1+=1
return res
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums)<3: return []
nums.sort()
ind0=0
res=[]
while ind0<len(nums)-2:
res+=self.match(nums, ind0)
while ind0<len(nums)-1 and nums[ind0]==nums[ind0+1]: ind0+=1
ind0+=1
return res

本文提供了一种解决LeetCode上3Sum问题的有效方法。通过定义一个名为Solution的类,利用双指针技巧实现对整数数组的三元组查找,寻找所有唯一且不重复的三元组,使得这三个数相加为零。该算法首先对数组进行排序,然后通过遍历数组并使用两个指针来寻找符合条件的三元组。
1072

被折叠的 条评论
为什么被折叠?



