Leetcode 第15题(三数之和)

Leetocde 15

三数之和在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值