首页 > 其他分享 >【LeetCode】39. 组合总和

【LeetCode】39. 组合总和

时间:2023-12-26 12:24:24浏览次数:25  
标签:39 target 组合 示例 int candidates path LeetCode 总和

题目

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

 

示例 1:

输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
解释:
2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是一个候选, 7 = 7 。
仅有这两种组合。
示例 2:

输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]
示例 3:

输入: candidates = [2], target = 1
输出: []
 

提示:

1 <= candidates.length <= 30
2 <= candidates[i] <= 40
candidates 的所有元素 互不相同
1 <= target <= 40

思路:
回溯算法
先对candidates排序
不断往下遍历即可

注意:python中,对list进行pop操作,删除的是最后一个元素

代码:

class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        candidates.sort()
        n = len(candidates)
        res, path = [], []
        def backtrack(i, target):
            if target == 0:
                res.append(path.copy())
                return
            if candidates[i] > target:
                return
            for j in range(i, n):
                path.append(candidates[j])
                backtrack(j, target - candidates[j])
                path.pop()
        backtrack(0, target)
        return res

标签:39,target,组合,示例,int,candidates,path,LeetCode,总和
From: https://www.cnblogs.com/basilicata/p/17927864.html

相关文章

  • 【LeetCode】79. 单词搜索
    链接:https://leetcode.cn/problems/word-search/思路:利用深度优先遍历深度优先遍历一般流程:判断当前是否符合要求若符合要求,则看更深一层是否符合要求最后逐层向上返回代码classSolution:defexist(self,board:List[List[str]],word:str)->bool:m,......
  • Leetcode LCP 02. 分式化简
    https://leetcode.cn/problems/deep-dark-fraction/description/有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗?连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度......
  • Leetcode LCP 14. 切分数组
    https://leetcode.cn/problems/qie-fen-shu-zu/description/给定一个整数数组nums,小李想将nums切割成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于1。为了减少他的工作量,请求出最少可以切成多少个子数组。示例1:输入:nums=[2,3,3,2,3,3]......
  • 代码随想录算法训练营第二天 | 239. 滑动窗口最大值,347.前 K 个高频元素
    一、239.滑动窗口最大值题目链接:LeetCode239.滑动窗口最大值学习前:思路:无学习后:自定义双端队列,实现push、pop、peek方法,使得队列单调非增。peek方法不变;当入队时,若当前元素比队尾元素大,则pop队尾,直到队列为空或当前元素不大于队尾元素;当出队时,若队列非空且队首元素和窗......
  • 『LeetCode』9. 回文数 Palindrome Number
    题目描述给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,为121-。因此......
  • Python - pandas 报错:ValueError: 'HIS_批准文号' is both an index level and a colu
    问题描述file:[Terminal]ValueError:'HIS_批准文号'isbothanindexlevelandacolumnlabel,whichisambiguous.ValueError:cannotinsert招采_批准文号,alreadyexists有这两个错误,使用函数merge合并的时候出现第一个错误,将两个DataFrame的索引reset_index......
  • 通过tidevice 启动wda 提示: request error: ('Connection aborted.', MuxReplyError(
    当我在使用tidevice启动wda来做iOS自动化测试的时候一直会报错:requesterror:('Connectionaborted.',MuxReplyError(<UsbmuxReplyCode.ConnectionRefused:3>))我在网上也一直翻翻翻寻找答案,每一次眼看着就快解决了可到最后仍是出现这串错误❌,经过几番波折我能试的办法都试了......
  • scrapy中运行一段时间报错pymysql.err.InterfaceError: (0, '')
    错误信息Traceback(mostrecentcalllast):File"/home/anaconda3/envs/python36/lib/python3.6/site-packages/twisted/python/threadpool.py",line250,ininContextresult=inContext.theWork()File"/home/anaconda3/envs/python36/lib/p......
  • error: failed to push some refs to 'http://192.168.1.37:1080/nongzi/nongzi-apple
    当你直接在github上在线修改了代码,或者是直接向某个库中添加文件,但是没有对本地库同步,接着你想push上传到远程库,就会失败,  这个问题是因为远程库与本地库不一致造成的,那么我们把远程库同步到本地库就可以了先把自己代码暂存,然后再拉取更新,然后提交代码 也可参考 http......
  • 无法获得数据库 'model' 上的排他锁。请稍后重试该操作
    标题:MicrosoftSQLServerManagementStudio数据库"XXXX"的创建失败。(Microsoft.SqlServer.Smo)有关帮助信息,请单击:https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=15.0.18206.0+((SSMS_Rel).191029-2112)&EvtSrc=Microsoft.SqlServer.......