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

牛牛的三元组问题

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

全部评论

相关推荐

码农索隆:我头回见校招简历把个人优势写在最前面的,是我老了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务