zoukankan      html  css  js  c++  java
  • LeetCode 39.组合总和

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
    candidates 中的数字可以无限制重复被选取。

    说明:
    所有数字(包括 target)都是正整数。
    解集不能包含重复的组合。 
    示例 1:
    输入: candidates = [2,3,6,7], target = 7,
    所求解集为:
    [
    [7],
    [2,2,3]
    ]

    示例 2:
    输入: candidates = [2,3,5], target = 8,
    所求解集为:
    [
      [2,2,2,2],
      [2,3,3],
      [3,5]
    ]

    class Solution:
        def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
            ans = []
            cur = []
            candidates = sorted(candidates)
            self.solve(candidates,target,ans,cur,0)
            return ans
    
        def solve(self, candidates,target,ans,cur,s):
            #print(ans,cur)
            if 0==target:
                ans.append(cur[::])
            else:
                for i in range(s,len(candidates)):
                    num = candidates[i]
                    if num>target:
                        break
                    #print(ans,cur,num)
                    cur.append(num)
                    result = self.solve(candidates,target-num,ans,cur,i)
                    cur.pop()
    
    
  • 相关阅读:
    畅通工程续
    find the safest road
    Window Pains
    什么是DO / DTO / BO / VO /AO ?
    编程四大件
    1.Redis简介和安装
    0.Redis课程大纲
    8.docker容器虚拟化与传统虚拟机比较
    7.docker私有仓库
    6.Docker服务编排
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13285329.html
Copyright © 2011-2022 走看看