Leetcode—216.组合总和III【中等】

这篇具有很好参考价值的文章主要介绍了Leetcode—216.组合总和III【中等】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023每日刷题(七十八)

Leetcode—216.组合总和III

Leetcode—216.组合总和III【中等】,LeetCode刷题,leetcode,深度优先,算法,dfs,剪枝,回溯,经验分享

算法思想

Leetcode—216.组合总和III【中等】,LeetCode刷题,leetcode,深度优先,算法,dfs,剪枝,回溯,经验分享
Leetcode—216.组合总和III【中等】,LeetCode刷题,leetcode,深度优先,算法,dfs,剪枝,回溯,经验分享

实现代码

class Solution {
public:
    vector<vector<int>> combinationSum3(int k, int n) {
        vector<vector<int>> ans;
        vector<int> path;
        function<void(int, int)> dfs = [&](int i, int res) {
            int d = k - path.size();
            if(res < 0 || res > (2 * i - d + 1) * d / 2) {
                return;
            }
            if(d == 0) {
                ans.emplace_back(path);
                return;
            }
            for(int j = i; j >= d; j--) {
                path.emplace_back(j);
                dfs(j - 1, res - j);
                path.pop_back();
            }
        };
        dfs(9, n);
        return ans;
    }
};

运行结果

Leetcode—216.组合总和III【中等】,LeetCode刷题,leetcode,深度优先,算法,dfs,剪枝,回溯,经验分享

选或不选实现代码

class Solution {
public:
    vector<vector<int>> combinationSum3(int k, int n) {
        vector<vector<int>> ans;
        vector<int> path;
        function<void(int, int)> dfs = [&](int i, int res) {
            int d = k - path.size();
            if(res < 0 || res > (2 * i - d + 1) * d / 2) {
                return;
            }
            if(d == 0) {
                ans.emplace_back(path);
                return;
            }
            // 不选
            if(i > d) {
                dfs(i - 1, res);
            }
            // 选
            path.emplace_back(i);
            dfs(i - 1, res - i);
            path.pop_back();
        };
        dfs(9, n);
        return ans;
    }
};

运行结果

Leetcode—216.组合总和III【中等】,LeetCode刷题,leetcode,深度优先,算法,dfs,剪枝,回溯,经验分享

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!文章来源地址https://www.toymoban.com/news/detail-817873.html

到了这里,关于Leetcode—216.组合总和III【中等】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode-中等题】40. 组合总和 II

    本题需要注意的就是去重操作因为nums数组里面的元素可能存在重复: 不重复的版本:【LeetCode-中等题】39. 组合总和 不去重版 参考讲解视频—回溯算法中的去重,树层去重树枝去重,你弄清楚了没?| LeetCode:40.组合总和II

    2024年02月09日
    浏览(30)
  • 【力扣】216. 组合总和 III <回溯、回溯剪枝>

    找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字 1 到 9,每个数字最多使用一次,返回所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 解释: 1 + 2 + 4 = 7 没有其他符合的组合

    2024年02月10日
    浏览(26)
  • Day 25 | 回溯 216.组合总和III 、17.电话号码的字母组合

    题目 文章讲解 视频讲解 思路: 以回溯函数做对称,上面做了什么操作,下面也是 题目 文章讲解 视频讲解 思路:思路上和组合很像,不同的是对字符串进行操作 还得再想想

    2024年01月21日
    浏览(30)
  • 代码随想录22| 216.组合总和III, 17.电话号码的字母组合

    题目链接/文章讲解:链接地址 视频讲解:链接地址 代码思路:回溯三部曲: 1.确定函数参数:n,k,sum,startIndex; 2.结束条件,path == k,并且如果sum==n 结束递归 3.递归回溯逻辑。 题目链接/文章讲解:链接地址 视频讲解:链接地址 代码思路:传入参数:输入的数字,第几个数字的

    2024年02月11日
    浏览(30)
  • 力扣日记1.22-【回溯算法篇】216. 组合总和 III

    日期:2023.1.22 参考:代码随想录、力扣 题目描述 难度:中等 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入:

    2024年01月23日
    浏览(32)
  • LeetCode 377. 组合总和 Ⅳ

    解题思路 之前一直以为这是背包问题,后来发现,这个是有顺序的, 而背包问题是无序的,但是我们也可以用dp分析法来分析。 相关代码

    2024年04月12日
    浏览(34)
  • 【Leetcode】377. 组合总和 Ⅳ

    题目链接🔗 给你一个由 不同 整数组成的数组 n u m s nums n u m s ,和一个目标整数 t a r g e t target t a r g e t 。请你从 n u m s nums n u m s 中找出并返回总和为 t a r g e t target t a r g e t 的元素组合的个数。 题目数据保证答案符合 32 32 32 位整数范围。 示例 1: **输入:**nums = [1,2,3],

    2024年04月23日
    浏览(30)
  • 【LeetCode】39.组合总和

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

    2024年02月16日
    浏览(33)
  • LeetCode 39题:组合总和

    目录 题目 代码 官方提供 给定一个候选人编号的集合  candidates  和一个目标数  target  ,找出  candidates  中所有可以使数字和为  target  的组合。 candidates  中的每个数字在每个组合中只能使用  一次  。 注意: 解集不能包含重复的组合。  示例 1: 示例 2: 提示: 1 = can

    2024年02月12日
    浏览(28)
  • 每天一道leetcode:1306. 跳跃游戏 III(图论&中等&广度优先遍历)

    这里有一个非负整数数组 `arr`,你最开始位于该数组的起始下标 `start` 处。当你位于下标 `i` 处时,你可以跳到 `i + arr[i]` 或者 `i - arr[i]`。 请你判断自己是否能够跳到对应元素值为 0 的 **任一** 下标处。 注意,不管是什么情况下,你都无法跳到数组之外。 ``` 输入:arr = [4,

    2024年02月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包