本文共 870 字,大约阅读时间需要 2 分钟。
Given an array nums
of n integers, are there elements a, b, c in nums
such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]
判断数组中是否存在三个数的和为0,如果存在则把所有结果返回。
这里我利用双指针的方法。
先把数组排序,然后对于每个数nums[i],left和right两个指针分别指向nums[i+1]和nums[l-1]
如果三个数和为0则添加到final中,如果nums[i]>0或者全部遍历结束则返回final。
其他情况下则依次遍历。
注意sums==0时不能直接break,因为会出现不同数字和同样为0的情况,比如[[-1,-1,2],[-1,0,1]],break则会缺失后面的结果。
class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: final=[] nums.sort() l=len(nums) for i in range(l): left, right = i+1, l-1 if nums[i]>0:return final if i!=0 and nums[i]==nums[i-1]:continue while left
转载地址:http://ocrbb.baihongyu.com/