首页 > 其他 > 详细

leetcode 每日一题 40. 组合总和 II

时间:2020-05-22 14:06:17      阅读:49      评论:0      收藏:0      [点我收藏+]

技术分享图片

回溯法

思路:

参考39.组合总和,在回溯时加判断条件和改变开始位置达到去重。

代码:

class Solution:
    def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
        candidates.sort()
        res = []
        path = []
        self.process(candidates,0,len(candidates),path,res,target)
        return res

    def process(self,candidates,begin,size,path,res,target):
        if target == 0:
            return res.append(path[:])
        if target < 0:
            return    
        for i in range(begin,size):
            if candidates[i]<=target and (i==begin or candidates[i] != candidates[i-1]):
                path.append(candidates[i])
                self.process(candidates,i+1,size,path,res,target-candidates[i])
                path.pop()

 

leetcode 每日一题 40. 组合总和 II

原文:https://www.cnblogs.com/nilhxzcode/p/12936558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!