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