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

牛牛的三元组问题

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

全部评论

相关推荐

02-26 13:56
已编辑
重庆财经学院 Java
King987:你有实习经历,但是写的也太简单了,这肯定是不行的,你主要要包装实习经历这一块,看我的作品,你自己包装一下吧,或者发我,我给你出一期作品
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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