当前位置: 首页 > article >正文

算法-回溯篇02-组合总和 III

组合总和 III

力扣题目链接

题目描述

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

只使用数字1到9
每个数字 最多使用一次
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

解题思路

这道题目其实数据量小,使用回溯主要还是为了学会它。
和上一题类似,这里我对于回溯的做法如下:

  • 记录下剩下需要的数字的数量,每次选取一个数字把数量减一;
  • 把相加目标之和减去当前数据;
  • 后面的数字长度要保证大于等于需要选取的长度;i < 10 - k
  • 当前选取的数据要小于等于剩下的数据大小;i <= n
  • 当剩余数为0且剩余相加目标之和也为0时返回一个路径。

题解

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

    void backTracking(int k, int n, int startIndex){
        k--;
        if(k == -1 && n == 0){
            ans.push_back(path);
        }
        for(int i = startIndex; i <= n && i < 10 - k; i++){
            path.push_back(i);
            backTracking(k, n - i, i + 1);
            path.pop_back();
        }
    }

    vector<vector<int>> combinationSum3(int k, int n) {
        backTracking(k, n, 1);
        return ans;
    }
};

http://www.kler.cn/a/570100.html

相关文章:

  • LeetCode hot 100—矩阵置零
  • Python:全方位赋能,开启科技前沿无限可能
  • Ubuntu20.04 ros-noetic下opencv多版本问题may conflict with libopencv_highgui.so.4.2
  • 鸿蒙NEXT开发-华为账号服务
  • MATLAB CVX 能处理的目标函数数量级极限是多少?
  • 【后端】Flask vs Django vs Node.js 对比分析
  • 数据结构——哈希表的实现
  • unity接入阿里云语音转文字,文字转语音功能
  • 知识库适配DeepSeek,企业微信支持自动登录,授权支持过期时间设置,zyplayer-doc 2.4.9 发布啦!
  • 一个开源且免费的 .NET CMS 和应用程序框架
  • 洛谷————P1634 禽兽的传染病
  • 实验室预约小程序
  • GreptimeDB v0.12 发布,开源 Rust 时序数据库
  • Thinkphp6 应用RdKafka插件封装工具类
  • unity pico开发二:连接头盔,配置手柄按键事件
  • vscode通过ssh远程连接(linux系统)不能跳转问题
  • R语言的基础命令及实例操作
  • C/C++ | 每日一练 (5)
  • Leetcode 662: 二叉树最大宽度
  • 【江科协-STM32】6. TIM编码器接口