题解 | #三数之和#

三数之和

https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711

class Solution:
    def threeSum(self, num: List[int]) -> List[List[int]]:
        if len(num) < 3:
            return []
        num.sort()
        if num[-1] < 0 or num[0] > 0:
            return []
        res = []
        first = 0
        while first < len(num):
            if num[first] > 0:
                break
            l, r = first + 1, len(num) - 1
            while l < r:
                tmp = num[first] + num[l] + num[r]
                if tmp == 0:
                    res.append([num[first], num[l], num[r]])
                    l += 1
                    r -= 1
                    while l < r and num[l - 1] == num[l]:
                        l += 1
                    while r > l and num[r + 1] == num[r]:
                        r -= 1
                elif tmp > 0:
                    r -= 1
                else:
                    l += 1
            first += 1
            while first < len(num) and num[first] == num[first - 1]:
                first += 1
        return res

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务