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

LeetCode-216-组合总和Ⅱ

题目链接:
LeetCode-216-组合总和Ⅱ

解题思路:回溯算法
注意事项注释中有

代码实现:

class Solution {/*** 和为 n,个数为 k* 求的是组合,不要求顺序* 递归的深度是 k*/public List<List<Integer>> combinationSum3(int k, int n) {backtracking(k, n, 1, 0);return res;}// 两个全局变量,一个一维数组放取的元素,一个二维数组放结果List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();public void backtracking(int k, int targetSum, int startIndex, int sum){if (sum > targetSum||path.size()>k){// 这里需要再增加一个条件,sum>目标值返回,个数大于k也返回,可以根据个数提前结束判断,节省时间return;}if (path.size() == k && sum == targetSum){res.add(new LinkedList<>(path));// 添加到res中的方法一
//            List<Integer> tmp = new ArrayList<>();// 添加到res中的方法二,也可以一个一个的添加
//            for(int t:path){
//                tmp.add(t);
//            }
//            res.add(tmp);return;}for (int i = startIndex; i <=9 ; i++) {// 区间可以剪枝path.add(i);
//             sum += i; // 不推荐这种写法,每次会改变sum的值backtracking(k,targetSum,i+1, sum+i); // 直接写到参数里,sum的值也不会变
//            sum -= i;// 探了之后发现不行path.remove(path.size()-1);}}
}
http://www.lryc.cn/news/158140.html

相关文章:

  • [技术杂谈]几款常用的安装包制作工具
  • 旋转屏幕显示方向-rk3568
  • 07 Linux补充|秋招刷题|9月6日
  • 【JavaGuide学习笔记】Day.1
  • 大数据课程K18——Spark的ALS算法与显式矩阵分解
  • Android Jetpack架构组件库:Hilt
  • 企业帮助中心如何在线搭建,还能多场景使用呢?
  • C++ primer plus第十五章编程练习答案
  • 【精品】商品规格 数据库表 设计
  • 无人机集群路径规划MATLAB:孔雀优化算法POA求解无人机集群三维路径规划
  • Dockerfile创建镜像异常问题解决
  • 使用libcurl请求https的get/post
  • AUTOSAR规范与ECU软件开发(实践篇)7.3 MCAL模块配置方法及常用接口函数介绍之GPT的配置
  • Android 性能优化--内存优化分析总结
  • buuctf web 前5题
  • stable diffusion实践操作-提示词-人物服饰
  • Tomcat加载静态资源--防止SpringMVC拦截
  • 【AI数字人】如何基于ER-NeRF自训练AI数字人
  • 多目标应用:基于多目标哈里斯鹰优化算法(MOHHO)的微电网多目标优化调度研究MATLAB
  • [运维|中间件] 东方通TongWeb忘记密码后修改密码
  • 无涯教程-Android Mock Test函数
  • 保留网络[02/3]:大型语言模型转换器的继任者”
  • 微信小程序-生成canvas图片并保存到手机相册
  • 设计模式8:代理模式-动态代理
  • tcp字节传输(java)-自定义包头和数据识别
  • pyspark 系统找不到指定的路径; \Java\jdk1.8.0_172\bin\java
  • UE4 Physics Constraint Actor 实现钟摆效果
  • UE4/UE5 动画控制
  • Springboot整合shiro
  • 阻塞/非阻塞、同步/异步(网络IO)