Leetcode算法提高之LeetCode刷题LeetCode Top 100 Liked Questions

LeetCode#15 3Sum

2017-11-01  本文已影响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)))

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

上一篇下一篇

猜你喜欢

热点阅读