首页 文章资讯内容详情

Python中3Sum的使用

2026-06-04 1 花语

假设我们有一个数字数组。它存储n个整数,数组中有元素a,b,c,这样a+b+c=0。找到满足情况的数组中的所有唯一三元组。因此,如果数组类似于[-1,0,1,2,-1,-4],则结果将为[[-1,1,0],[-1,-1,2]]

为了解决这个问题,我们将遵循以下步骤-

对数组num进行排序,并定义数组res

对于0到num的长度范围内的i–3

sum:=nums[i],nums[l]和nums[r]的总和

如果sum<0,则l:=l+1,否则,当sum>0时,则r:=r–1

否则将nums[i],nums[l],nums[r]插入res数组

而l<num的长度–1和nums[l]=nums[l+1]

而r>0且nums[r]=nums[r-1]

将l增加1并将r减少1

使我增加1

将r减1

如果i>0并且nums[i]=nums[i-1],则跳过下一部分并继续

l:=i+1和r:=nums的长度–1

当l<r

返回资源

示例(Python)

让我们看下面的实现以更好地理解-

class Solution(object): def threeSum(self, nums): nums.sort() result = [] for i in range(len(nums)-2): if i> 0 and nums[i] == nums[i-1]: continue l = i+1 r = len(nums)-1 while(l<r): sum = nums[i] + nums[l] + nums[r] if sum<0: l+=1 elif sum >0: r-=1 else: result.append([nums[i],nums[l],nums[r]]) while l<len(nums)-1 and nums[l] == nums[l + 1] : l += 1 while r>0 and nums[r] == nums[r - 1]: r -= 1 l+=1 r-=1 return result ob1 = Solution() print(ob1.threeSum([-1,0,1,2,-1,-4]))

输入项

[-1,0,1,2,-1,-4]

输出结果

[[-1,-1,2],[-1,0,1]]