【LeetCode 53】39.组合总和

简介: 【LeetCode 53】39.组合总和

一、题意

二、解答过程

回溯三部曲:

  • 确定参数
  • 确定终止条件
  • 确定单层递归逻辑
class Solution {
private:
    vector<vector<int>>result;
    vector<int> path;
    void backtracking(vector<int>&candidates,int target,int sum,int startIndex)
    {
        if(sum>target)
        {
            return;
        }
        if(sum==target)
        {
            result.push_back(path);
            return;
        }
        
          for (int i = startIndex; i < candidates.size(); i++)
         //剪枝操作
        //for(int i=startIndex;i<candidates.size()&&sum+candidates[i]<=target;i++)
        {
            /* code */
            sum+=candidates[i];
            path.push_back(candidates[i]);
            //不需要i+1表示可以重复读取当前的数
            backtracking(candidates,target,sum,i);
            sum-=candidates[i];
            path.pop_back();
        }
        
    }
public:
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        result.clear();
        path.clear();
        backtracking(candidates,target,0,0);
        return result;
    }
};

剪枝操作的理解,就是for循环那里做改动:


目录
相关文章
|
存储 SQL 数据库
面试官:索引失效场景有哪些?
以下是内容的摘要: 本文列举了可能导致数据库索引失效的16种情况:全表扫描、索引列使用计算或函数、LIKE查询条件不匹配、未遵循联合索引最左前缀原则、索引列参与排序无筛选、隐式类型转换、OR条件连接索引、IN子句大量值、NOT操作、数据分布不均的JOIN、数据过于分散的查询、大结果集、临时表或派生表操作、索引维护不及时以及不等于比较和IS NOT NULL条件。这些情况都可能使查询优化器放弃使用索引,影响查询性能。
1184 1
|
数据采集 存储 缓存
如何设计一个网络爬虫?
网络爬虫也被称为机器人或蜘蛛,它被搜索引擎用于发现网络上的新内容或更新内容。内容可以是网页、图片、视频、PDF文件等。网络爬虫开始时会收集一些网页,然后跟随这些网页上的链接收集新的内容
|
Linux 虚拟化
VMware虚拟机 用共享文件夹方式 与主机传输文件(图文)
VMware虚拟机 用共享文件夹方式 与主机传输文件(图文)
VMware虚拟机 用共享文件夹方式 与主机传输文件(图文)
|
弹性计算 Linux Go
如何在阿里云ecs服务器之间高效内网传输大文件
阿里云ecs服务器之间大文件迁移利用阿里云oss通过内网传输解决方案
3733 0
如何在阿里云ecs服务器之间高效内网传输大文件
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
406 43
|
12月前
|
机器学习/深度学习 IDE 开发工具
基于OpenCV的车牌识别系统源码分享
基于OpenCV的车牌识别系统主要利用图像边缘和车牌颜色定位车牌,再利用OpenCV的SVM识别具体字符,从而达到车牌识别的效果。
536 4
基于OpenCV的车牌识别系统源码分享
|
存储 算法 NoSQL
数据结构和算法——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散列探测、再散列,分离链接法)
数据结构和算法——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散列探测、再散列,分离链接法)
1122 1
写一个数据备份的脚本
请提供需要编写简介的具体内容,以便我为您完成任务。
|
前端开发 Python
Python Tricks-- Abstract Base Classes Keep Inheritance in Check
Python Tricks-- Abstract Base Classes Keep Inheritance in Check
117 1
|
算法 C++
【牛客-算法】NC61 两数之和(哈希表的运用,C++)
前言 🔥 该专栏作为算法题笔记,记录算法的思路、遇到的问题,以及能跑的代码,持续更新中! 🔥 推荐一款面试、刷题神器牛客网:👉开始刷题学习👈
562 1