找出列表中所有和为0的三个数。
大致思想应该是一样的,列表排序,对于每个元素,从两边开始向内,找和为0的元素
class Solution(object):
def threeSum(self, nums):
nums.sort()
result=[]
for i in range(len(nums)):
#跳过重复值
if i>0 and nums[i] == nums[i-1]:
continue
j = i+1
k = len(nums)-1
while j<k:
temp = nums[i]+nums[j]+nums[k]
if temp < 0:
j+=1
if temp == 0:
result.append((nums[i],nums[j],nums[k]))
j+=1
k-=1
if temp > 0:
k-=1
#这一行啰嗦,有最开始的if就不需要对result再处理
return list(set(tuple(result)))
最后一行是一种去重的方式
网友评论