• Combination Sum II


    问题:给定一个无重复的数组candidates和一个目标值target,根据数组中的元素输出和为目标值的所有可能组合,数组中的每个元素不能多次使用,输出结果不能有重复的组合。数组中的数和target均为正数

    示例:

    输入:candidates = [1,2,3,5,6] target = 6

    输出:[[1,2,3],[6]]

    解决思路:对candidates进行排序,之后遍历,并相应的减小target,递归进行,直到target为0.

    Python代码:

    class Solution(object):
        def combinationSum2(self, candidates, target):
            """
            :type candidates: List[int]
            :type target: int
            :rtype: List[List[int]]
            """
            self.out = []
            candidates.sort()
            self.Sum(candidates,target)
            return self.out
            
        def Sum(self,candidates,target,res=[],use=[]):
            if not target:
                self.out.append(res)
                return
            for i in range(len(candidates)):
            # Avoid duplicate usage of the same elements in cnadidates
    if i > 0 and candidates[i] == candidates[i-1]: continue can = candidates[i] if can <= target: # To avoid duplicate usage of elements and duplicate combinations, input "candidaters[i+1:] instead of candidates" self.Sum(candidates[i+1:],target-can,res+[can]) else: break
  • 相关阅读:
    软件工程二人组队开发第一周
    软件工程第五周
    这学期的目标
    软件工程第四周的总结
    二维数组的最大子数组和 时间复杂度:O(n的四次方)
    10.tesseract
    mysql存储过程和函数
    mysql触发器
    9.selenium
    mysql练习
  • 原文地址:https://www.cnblogs.com/wenqinchao/p/10818555.html
Copyright © 2020-2023  润新知