Leetcode 第15题(三数之和)

Leetocde 15

三数之和Leetcode 第15题(三数之和)_第1张图片

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        ans = list()   #初始化返回值为空列表
        nums.sort()    #将输入列表元素进行升序排序
        n = len(nums)
        for a in range(n):
            if a>0 and nums[a] == nums[a-1]: #如果当前元素与上一个元素相等,跳过当前循环
                continue
            c = n-1  #初始化指针c,指向最右(最大)的元素
            for b in range(b+1,n): 
                if b>a+1 and nums[b] == nums[b-1]:
                    continue
                while c>b and nums[a]+nums[b]+nums[c]>0 : 
                    c -= 1 #当三数之和大于0时,指针左移,直到和不大于0
                if c == b: #如果c与b相等,结束循环
                    break
                if nums[a]+nums[b]+nums[c] == 0: 
                    ans.append([nums[a],nums[b],nums[c]])
        return ans

你可能感兴趣的:(Leetcode,python)