题解 | #牛牛的三元组问题#回溯

牛牛的三元组问题

https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839

这题一看就属于元素可重复,不可复选的回溯问题。

思路:对数组排序一趟,防止重复元素的原因造成复选

然后构造递归出口: 和为0且数组长度为3

接下来就是for+递归


class Solution:
    def findTriplets(self , nums: List[int]) -> List[List[int]]:
        # write code here
        track = []
        nums.sort()
        res = []
        cnt = 0
        n = len(nums)
        def  backtrack(start):
            nonlocal cnt
            if len(track) == 3 and cnt == 0:
                res.append(track[:])
                return
            for i in range(start, n):
                if i > start and nums[i] == nums[i-1]:
                    continue
                cnt += nums[i]
                track.append(nums[i])
                backtrack(i+1)
                cnt -= track.pop()
        backtrack(0)
        return res

全部评论

相关推荐

01-17 08:34
门头沟学院 Java
想找对象的单身狗在努力存钱:这工资不低了,再高点人家要招博士硕士的
点赞 评论 收藏
分享
01-24 08:13
已编辑
合肥工业大学 Java
程序员牛肉:没啥问题。标准的流水线简历,但是学历好一点,所以应该是有约面的机会的。 这段时间可以考虑把自己的两个项目彻底的理一理。争取能够讲清楚每一个功能点
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务