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

牛牛的三元组问题

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

全部评论

相关推荐

03-28 16:43
佛山大学 Java
在度假的布拉德很想退...:你这实习项目写的也太简单了吧?业务加技术难点要体现出来呀,你这写的都不知道具体干了什么
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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