首页 > 其他分享 >代码随想录:组合总和二

代码随想录:组合总和二

时间:2025-01-21 23:54:09浏览次数:1  
标签:target int 代码 随想录 vector candidates sum 总和

这题说实话有点晕晕乎乎的,最后直接把代码随想录的代码复制过来了。

要解决的问题是,尽管用了不同位置的相同元素,但是会产生相同的结果。

解决方法是排序后,跳过相同元素。

代码随想录那个used数组我属实没看懂,这个方法倒是看懂了。

class Solution {
private:
    vector<vector<int>> result;
    vector<int> path;
    void backtracking(vector<int>& candidates, int target, int sum,
                      int startIndex) {
        if (sum == target) {
            result.push_back(path);
            return;
        }
        for (int i = startIndex;
             i < candidates.size() && sum + candidates[i] <= target; i++) {
            // 要对同一树层使用过的元素进行跳过
            if (i > startIndex && candidates[i] == candidates[i - 1]) {
                continue;
            }
            sum += candidates[i];
            path.push_back(candidates[i]);
            backtracking(candidates, target, sum, i + 1);
            sum -= candidates[i];
            path.pop_back();
        }
    }

public:
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {

        sort(candidates.begin(), candidates.end());
        backtracking(candidates, target, 0, 0);
        return result;
    }
};

标签:target,int,代码,随想录,vector,candidates,sum,总和
From: https://www.cnblogs.com/huigugu/p/18684778

相关文章

  • 代码随想录:组合总和
    回溯的本质就是多层for循环嵌套,用于解决不知道有多少层for循环的情况,适当剪枝其实也是for循环里增加限制条件classSolution{public:vector<int>sum;vector<vector<int>>res;vector<vector<int>>combinationSum(vector<int>&candidates,inttarget){......
  • 细说机器学习算法之XGBoost及代码实现
    系列文章目录第一章:Pyhton机器学习算法之KNN第二章:Pyhton机器学习算法之K—Means第三章:Pyhton机器学习算法之随机森林第四章:Pyhton机器学习算法之线性回归第五章:Pyhton机器学习算法之有监督学习与无监督学习第六章:Pyhton机器学习算法之朴素贝叶斯第七章:Pyhton机器学习算......
  • uart串口的低速通信基础知识及模块代码(来自正点原子P15)
    正点原子P15在PL端的uart电路参考,PS端uart和PL端一致,这里不做重复,uart电路由电脑端进行供电,即uart和主芯片之间除利用uart_tx和uart_rx通信外是独立的。从上图中可以看到,FPGA芯片的PL_UART1_TX连接到CH340的RXD管脚,FPGA芯片的PL_UART1_RX连接到CH340的TXD管脚,CH340的PL_CH......
  • 【教学类-13-06】20240119数字色块图的代码优化-简化代码路径+班级位置空缺
    背景需求:第一笔有客户购买“9图的数字像素图”,我都没有在百度网盘里备份。  ​​​​​​​打开代码文件夹,发现生成的PDF很多,不知道是哪一个?找到是这份,可是里面有大1班了,客户不一定是大1班。所以word模版的班级要空着,就需要修改模版删除中3的文字,按四个空格(2个汉......
  • C# 9.0 中init与必需属性:解锁代码新境界
    一、引言在C#9.0的众多新特性中,init和必需属性犹如两颗璀璨的明星,为开发者带来了前所未有的编程体验。它们的出现,极大地提升了代码的质量和开发效率,成为了众多开发者手中的得力工具。以往,在定义只读属性时,我们往往需要在构造函数中手动赋值,这一过程不仅繁琐,还容易出错......
  • 2023年全国大学生数学建模大赛C题:基于历史数据的蔬菜类商品定价与补货决策模型(包含完
    目录基于历史数据的蔬菜类商品定价与补货决策模型摘要一、 问题重述1.1  问题背景1.2  问题提出二、 问题分析三、 模型假设与符号说明3.1 模型基本假设3.2  符号说明四、 问题一模型建立与求解4.1  问题一求解思路4.2 蔬菜类商品不同品类的分布规......
  • 系统相关类(详细总结和代码案例拆解)(对小白巨友好)
    前言:小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。今天就先更新系统相关类第一个  java.lang.Math我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,为什么......
  • 数据结构之链表(linked list)代码实现(小白轻松懂,C语言版)
    一、前言:链表的简单介绍链表(LinkedList)是一种重要的线性数据结构,它以节点(Node)的形式存储数据,每个节点通过指针(或引用)指向下一个节点,从而形成一个动态的数据链条。与数组不同,链表的内存分配并不连续,因此具有更灵活的插入和删除操作,但在随机访问元素时效率相对较低。链表通......
  • 【开源】基于SSM框架奶茶店管理系统(计算机毕业设计)+万字毕业论文+远程部署+ppt+代码讲
    系统合集跳转源码获取链接点击主页更能获取海量源码博主联系方式拉到下方点击名片获取!!!博主联系方式拉到下方点击名片获取!!!10年计算机开发经验,主营业务:源码获取、项目二开、语音辅导、远程调试、毕业设计、课程设计、毕业论文、BUG修改一、系统环境运行环境:最好是......
  • 微信公众号-脚本简单实现,自动新建草稿并发布草稿文章,代码开源
    介绍本来想写一个自动化发布微信公众号的小绿书的脚本。但是微信公众号官网没有小绿书的接口。想着算了吧,写都写了,那就写一个微信普通文章的脚本吧。写完了就想着把脚本分享出来,给大家一起交流下。水平有限,大佬轻喷。 思路1,获取百度热搜列表2,给热搜图片加上文字标题3,上......