leetcode 15. 三數之和 (python)
阿新 • • 發佈:2018-12-31
給定一個包含 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]] """ nums.sort()#排序 res =[] i = 0 for i in range(len(nums)): if i == 0 or nums[i]>nums[i-1]: l = i+1 r = len(nums)-1 while l < r: s = nums[i] + nums[l] +nums[r] if s ==0: res.append([nums[i],nums[l],nums[r]]) l +=1 r -=1 while l < r and nums[l] == nums[l-1]:#避免相同值 l += 1 while r > l and nums[r] == nums[r+1]: r -= 1 elif s>0: r -=1 else : l +=1 return res