算法-回溯篇04-组合总和

中微8S6990外设开发实战:从GPIO配置到低功耗休眠的完整指南 本文提供了中微8S6990增强型8051单片机从GPIO配置到低功耗休眠的完整实战指南。详细讲解了开发环境搭建、GPIO灵活配置、定时器中断、ADC采样优化、PWM电机控制等核心外设的编程要点与避坑技巧,并重点阐述了实现超低功耗休眠的系统性外设管理策略,帮助开发者快速上手并优化产品续航。 阅读详情

组合总和

力扣题目链接

题目描述

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

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

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

解题思路

回溯就按照递归的模板来写,确定好回溯路径和结束条件就行。

  • 这里我们需要总和等于目标值,那么我们先对数组进行排序,从大到小,这样我们就可以从大的一端开始尝试着把数据放入,然后计算当前总和的值;
  • 当值超过目标值时就往后取更小的数;
  • 如果当前值等于目标值,把路径加入答案列表;
  • 如果当前值小于目标值,就继续这个过程;

从大到小排序会让我们的数据选取更加具有目标性,可以减少很多不必要的路径试错。

题解

class Solution {
public:
    vector<vector<int>> ans;
    vector<int> path;

    void backTrack(vector<int>& candidates, int Index, int sum, int target){
        if(sum == target){
            ans.push_back(path);
        }
        else{
            for(int i = Index; i < candidates.size(); i++){
                if(candidates[i] + sum > target){
                    continue;
                }
                sum += candidates[i];
                path.push_back(candidates[i]);
                backTrack(candidates, i, sum, target);
                sum -= candidates[i];
                path.pop_back();
            }
        }

        return;
    }

    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        sort(candidates.begin(), candidates.end(), greater<int>());
        backTrack(candidates, 0, 0, target);

        return ans;
    }
};
微信开放标签wx-open-launch-app样式失效?手把手教你正确设置点击区域(附完整代码) 本文详细解析了微信开放标签`wx-open-launch-app`样式失效和点击无响应的常见问题,提供了完整的解决方案和代码示例。通过分析标签内部实现机制,指导开发者正确设置点击区域和样式,确保跨平台兼容性和用户体验优化。 阅读详情

相关推荐

RabbitMQ的使用(JAVA)

Java快速上手的MQ上线!

.............. 1万+

「leetcode」39. 组合总和【回溯算法】详解!

看懂很容易,彻底掌握需要下功夫

代码随想录 1324

Zephyr RTOS详解

Zephyr 是一个开源的实时操作系统(RTOS),专为资源受限的嵌入式设备设计,支持多种架构(如 ARM Cortex-M、RISC-V、x86 等)。

weixin_43484713的博客 4109

「leetcode」最强回溯算法总结篇!历时21天、画了20张树形结构图、14道精选回溯题目精讲

20张树形结构图、14道精选回溯题目,21篇回溯法精讲文章,由浅入深,一气呵成,这是全网最强回溯算法总结!

代码随想录 2万+

雷达仿真:FMCW TDMA-MIMO 3D点云获取方法

2 信号建模摘要:通过设置时分复用(TDMA)波形结合FMCW毫米波雷达仿真获取目标的距离、速度和方位角3D点云信息。在本案例中,首先通过发射天线交替发射FMCW波形并通过接收天线依次接收回波信号从而得到雷达原始数据,其次对获取的原始数据依次经行距离、速度、角度估计从而输出目标的3D点云。阅读本文档,你将对TDMA-MIMO雷达的基本原理、毫米波雷达距离估计、速度估计以及角度估计的基本原理有所了解,另外CA-CFAR恒虚警以及MUSIC-DOA估计在本案例中也有所涉及。1 TDMA-MIMO原理。

Poulen的博客 6960

标签传播算法LPA:半监督学习解决标注数据不足的完整实战指南

在机器学习实际工程中,标注数据稀缺往往是制约模型性能的核心瓶颈。半监督学习提供了一条利用海量未标注数据来增强模型泛化能力的有效路径,其中标签传播算法(Label Propagation Algorithm, LPA)因其直观的图结构和优雅的数学原理而备受关注。LPA通过将样本映射为图中的节点,以相似度作为边权重,让已知标签沿着图结构不断扩散,从而实现对未知样本的预测。其背后基于聚类假设与流形假设,能在低标注率场景下显著缓解过拟合问题,提升分类准确率。该技术在文本分类、金融风控、图像识别等存在大量无标注数据的

weixin_29056781的博客 241

leetcode39组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target = 7。

weixin_43683432的博客 2227

从FinFET到GAA:手把手解读2nm芯片制造的关键技术(含BSPDN避坑指南)

本文深入解读了2nm芯片制造从FinFET向全环绕栅极(GAA)晶体管架构演进的核心技术,并重点剖析了背面供电网络(BSPDN)的三种实现路径及其工程挑战。文章旨在帮助工程师理解技术变革的内在逻辑,并为应对2nm节点设计中的关键问题提供实用指南。

weixin_29294975的博客 292

「leetcode」216.组合总和【回溯算法】详解!

别看本篇选的是组合总和III,而不是组合总和,本题和上一篇回溯算法:求组合问题相比难度刚刚好!

代码随想录 938

离线安装vue脚手架,内网安装@vue/cli

公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta

Liberty_yes的博客 1万+

告别unittest!用Pytest+Fixture重构你的Python测试代码(附实战案例)

本文详细介绍了如何从unittest迁移到Pytest框架,重点解析了Pytest的Fixture机制如何提升测试效率和代码简洁性。通过实战案例展示了Pytest在减少代码量、提升调试效率和资源管理方面的优势,帮助开发者重构Python测试代码。

weixin_26749245的博客 206

代码随想录算法day20 | 回溯算法part02 | 39. 组合总和,40.组合总和II,131.分割回文串

本题和我们之前讲过的​​​​​​​​​​​​​​77.组合和216.组合总和Ⅲ组合没有数量要求元素可无限重复选取针对这两个问题,以上都做了详细的分析。并且给出了对于组合问题,什么时候用 startIndex,什么时候不用,并用​​​​​​​17.电话号码的字母组合做了对比。代码随想录算法day19 | 回溯算法part01 | 77. 组合,216.组合总和III,17.电话号码的字母组合-优快云博客最后还给出了本题的剪枝优化,这个优化如果是初学者的话并不容易想到。

m0_62415132的博客 1303

STM32H745xI双核芯片SMPS/LDO配置误区:从复位失败到精准排查的实战复盘

本文详细分析了STM32H745xI双核芯片在SMPS/LDO配置中的常见误区,特别是复位失败问题的排查过程。通过对比参考板与故障板的波形数据,揭示了电感选型不当导致的电源稳定性问题,并提供了硬件设计检查清单和调试技巧,帮助开发者避免类似陷阱。

weixin_42531588的博客 265

算法日记day 24(回溯之组合问题)

这里有两个限制条件,第一个只能找k个数,第二个这k个数相加必须等于n,因此我们可以在遍历一个数时同时存入一个数组中,同时计算他的和,如果等于n的值则返回所有数,这里需注意,有些情况并不需要进行判断,例如n=3的情况,这时我们遍历4之后的数字就将没有任何意义了,所以当遍历的值本身就大于n时就不需要再遍历了。首先需要定义一个字符串对应电话中每一个数字所对应的字母,用一个String类型的字符串保存所需的第几个数字所对应的字母,遍历当前字母,然后递归处理下一个数字,直到所有情况遍历完毕后,返回到一个结果数组中。

m0_74980681的博客 1244

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

代码随想录算法day19 | 回溯算法part01 | 77. 组合,216.组合总和III,17.电话号码的字母组合

组合问题是回溯法解决的经典问题,我们开始的时候给大家列举一个很形象的例子,就是n为100,k为50的话,直接想法就需要50层for循环。从而引出了回溯法就是解决这种k层for循环嵌套的问题。然后进一步把回溯法的搜索过程抽象为树形结构,可以直观的看出搜索的过程。接着用回溯法三部曲,逐步分析了函数参数、终止条件和单层搜索的过程。

m0_62415132的博客 1221

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

里计算两个数的总和_回溯算法:求组合总和(二)

给「代码随想录」一个星标吧!❝我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/leetcode-master,方便大家在电脑上学习,可以fork到自己仓库,顺便也给个star支持一波吧!❞第39题. 组合总和题目链接:https://leetcode-cn.com/problems/combination-sum...

weixin_39566882的博客 241

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

「leetcode」40.组合总和II【回溯算法】详解!

这篇可以说是全网把组合问题如何去重,讲的最清晰的了!

代码随想录 612

代码随想录Day 23|回溯Part02,39.组合总和、40.组合总和Ⅱ、131.分割回文串

回溯问题的进阶,判断回文串,可以重复选取元素,使用used数组。

LuckyYH__的博客 992

04. 组合总和

39. 组合总和

qq_70280303的博客 651

代码随想录|回溯算法|04组合总和III

目标和n(这里也写成targetSum),组合的长度k,下一层for循环的起始位置startIndex,已经收集的元素之和sum。(2)跟之前一样,当path的长度为k就终止了,但是这里因为附加了条件,所以终止之后并不是立刻收集结果,还需要进行判断,即。示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]本题就是在[1,2,3,4,5,6,7,8,9]这个集合中找到和为n的k个数的组合。本题跟之前组合问题相比,加了一个“求和”的限制,其他的都差不多。

这里什么也没有 726

ii 组合总和_回溯算法:求组合总和(三)

给「代码随想录」一个星标吧!❝这篇可以说是全网把组合问题如何去重,讲的最清晰的了!通知:我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/leetcode-master,方便大家在电脑上学习,可以fork到自己仓库,顺便也给个star支持一波吧!❞40.组合总和II题目链接:https://leetcode-cn....

weixin_36016360的博客 105

本题要求实现一个求整数的逆序数的简单函数。_回溯算法:求组合总和(二)...

给「代码随想录」一个星标吧!❝我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/leetcode-master,方便大家在电脑上学习,可以fork到自己仓库,顺便也给个star支持一波吧!❞第39题. 组合总和题目链接:https://leetcode-cn.com/problems/combination-sum...

weixin_39640157的博客 1572

LeetCode 216. 组合总和 III 回溯写法详解

这道题目通过回溯算法帮助我们理解了如何从一组数字中生成满足条件的组合。通过剪枝,我们能够有效减少不必要的计算,提升算法的性能。这种思路在解决类似的组合数学问题时非常有效。

Lentr0py的博客 1165

1-10所有5个数的组合_互联网高频面试题目:「回溯算法」求组合总和

我将算法学习相关的资料已经整理到了Github :https://github.com/youngyangyang04/leetcode-master,里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图看一看一定会有所收获,如果给你有帮助给一个star支持一下吧!第216题.组合总和III链接:https://leetcode-cn.com/problems/combinatio...

weixin_29850921的博客 297

算法训练第20天|39. 组合总和|40.组合总和II|131.分割回文串

还可以进行剪枝操作,对总集合排序之后,如果下一层的sum(就是本层的 sum + candidates[i])已经大于target,就可以结束本轮for循环的遍历。所以在 backtracking(candidates, target, sum+candidates[i], i)中,传入的就是i,不能是i+1。如果至少一个数字的被选数量不同,则两种组合是不同的。题目描述:给定一个候选人编号的集合。中的每个数字在每个组合中只能使用。中可以使数字和为目标数。对于给定的输入,保证和为。解集不能包含重复的组合。

qq_42813810的博客 877

回溯算法探索篇Ⅰ

给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。

ch_ah的博客 614
上一篇: 算法-回溯篇03-电话号码的字母组合
下一篇: 算法-回溯篇05-组合总和 II
Buling_0
博客等级 码龄5年 232粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值