LeetCode#15 3Sum

作者: 夹小欣 | 来源:发表于2017-11-01 20:23 被阅读8次

找出列表中所有和为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)))

最后一行是一种去重的方式

相关文章

网友评论

    本文标题:LeetCode#15 3Sum

    本文链接:https://www.haomeiwen.com/subject/qktnpxtx.html