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

LeetCode:216.组合总和III

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:216.组合总和III
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:
只使用数字1到9
每个数字 最多使用一次
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。
示例 1:
输入: k = 3, n = 7
输出: [[1,2,4]]
解释:
1 + 2 + 4 = 7
没有其他符合的组合了。
示例 2:
输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]
解释:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
没有其他符合的组合了。
示例 3:
输入: k = 4, n = 1
输出: []
解释: 不存在有效的组合。
在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。

和上一题类似,只是多加了一个和的限制

	public List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> res = new ArrayList<>();
        backtracking(k, n, 1, 0, new ArrayList<>(), res);
        return res;
    }

    private void backtracking(int k, int n, int startIndex, int sum, List<Integer> path, List<List<Integer>> res) {
        // sum作为参数的话会快很多
        // int sum = path.stream().mapToInt(Integer::intValue).sum();

        if (sum > n)
            return;
        if (path.size() == k && sum == n) {
            res.add(new ArrayList(path));
            return;
        }
        for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) {
            path.add(i);
            sum += i;
            backtracking(k, n, i + 1, sum, path, res);
            sum -= i;
            path.removeLast();
        }
    }

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

相关文章:

  • Cython全教程2 多种定义方式
  • android framework.jar 在应用中使用
  • 2 XDMA IP中断
  • Full GC 日志
  • 2.Numpy练习(1)
  • 改进萤火虫算法之七:基于自适应机制的萤火虫算法(Adaptive Firefly Algorithm, AFA)
  • 基于单片机的书写坐姿规范提醒器的设计(论文+源码)
  • 自动化机械臂视觉跟踪和手眼校准
  • Docker Swarm、Kubernetes 和 LVS 的功能对比
  • Go语言如何实现高性能缓存服务
  • 青少年编程与数学 02-006 前端开发框架VUE 24课题、UI表单
  • virtual box虚拟机误删Python3.6后导致UBUNTU18.04开机无UI界面(进不了desktop)的解决方法
  • docker推送本地仓库报错
  • 2025年VGC大众汽车科技社招入职测评综合能力英语口语SHL历年真题汇总、考情分析
  • 嵌入式入门Day42
  • Centos8部署Redis Cluster
  • STM32——点亮LED
  • shell脚本回顾1
  • [文献精汇]使用 LSTM Networks 的均值回归交易策略
  • 2024年开发语言热度排名
  • ECharts实战:在UniApp中实现动态数据可视化
  • 奇迹mu1.03单机版安装教程+无需虚拟机+GM工具
  • HTML和CSS相关详解,如何使网页为响应式?
  • vue如何把有效URL地址通过接口file文件重新上传
  • 作业:IO:day??
  • docker的数据卷和自定义镜像