leetcode 15 O(n^2) 三數之和 python
阿新 • • 發佈:2018-11-25
給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[
[-1, 0, 1],
[-1, -1, 2]
]
class Solution: def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ res = [] nums.sort() for i in range(len(nums)-2): if i>0 and nums[i] == nums[i-1]: continue l,r=i+1,len(nums)-1 while l<r: s = nums[i]+nums[l]+nums[r] if s<0: l+=1 elif s>0: r-=1 else: res.append((nums[i],nums[l],nums[r])) while l<r and nums[l] == nums[l+1]: l+=1 while l<r and nums[r] == nums[r-1]: r-=1 l+=1 r-=1 return res