首页 > 代码库 > 【LeetCode】15. 3Sum
【LeetCode】15. 3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
题意:找出数组中所有和为0的不同的三个数,从小到大排列
思路:
刚开始想用双指针,然后在两个指针中间去找第三个数,但是想不到边上的两个指针往中间递进的条件。
然后就只有先确定一个数,然后用双指针去找另外两个数
1 class Solution(object): 2 def threeSum(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: List[List[int]] 6 """ 7 l = len(nums) 8 if l<3: 9 return [] 10 res = [] 11 nums.sort() 12 i=0 13 while(i<l-2): 14 if nums[i]>0: 15 break; 16 target = 0 - nums[i] 17 start = i+1;end = l-1 18 while start<end: 19 tmp = nums[start] + nums[end] 20 if tmp>target: 21 end-=1 22 elif tmp<target: 23 start+=1 24 else: 25 res.append([nums[i],nums[start],nums[end]]) 26 t = start 27 while start<end and nums[t]==nums[start]: #略过相同的数 28 start+=1 29 t = end 30 while start<end and nums[t]==nums[end]: #略过相同的数 31 end-=1 32 t=i 33 while i<l-2 and nums[t]==nums[i]: 34 i+=1 35 return res
【LeetCode】15. 3Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。