LeetCode-216-组合总和Ⅱ

2023-11-01

题目链接:
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);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode-216-组合总和Ⅱ 的相关文章

随机推荐

  • FreeRTOS-内核控制函数

    FreeRTOS 内核控制函数 FreeRTOS中有一些内核函数 一般来说这些内核函数在应用层不会使用 但是内核控制函数是理解FreeRTOS中断的基础 接下来我们逐一分析这些内核函数 taskYIELD 该函数的作用是进行任务切换 这是一
  • ubuntu防火墙命令介绍

    ubuntu在开启ufw防火墙前 为了避免与iptables现有规则冲突 建议先清空iptables的所有规则 相关命令如下 iptables F 更改iptables规则链默认操作命令如下 iptables P INPUT ACCEPT
  • Eclipse出现Widget is disposed错误

    在Eclipse中切换正常磨损和Debug模式的时候出现了这种问题 可以通过关闭toggle breakcrumb 来屏蔽这种错误 如图所示
  • 单片机串行口

    http www cnblogs com xianghang123 archive 2011 03 22 1991093 html 单片机串行口 MCS 51单片机的串行口具有两条独立的数据线 发送端TXD和接收端RXD 它允许数据同时往两
  • STM32从标准库转到HAL遇到的问题(持续更新)

    一 GPIO配置 1 写入高低电平报错use of undeclared identifier 以下代码在define过程中不报错 define A HAL GPIO WritePin GPIOA GPIO Pin 7 GPIO PIN R
  • web前端向java后端传递model的几种方法

    1 通过fastjson传值 前端代码 post test modelStr JSON stringify data collection collection function ret do something 后端代码 RequestM
  • yolov3为什么对大目标检测不好_基于改进YOLOv3的交通场景小目标检测方法与流程...

    本发明提出一种基于改进yolov3的交通场景小目标检测方法 解决yolov3网络过深问题 提高对小目标检测的精确度和速度 一定程度上避免训练神经网络出现的过拟合现象 属于智能交通领域 背景技术 在交通目标识别应用中 小目标的识别与跟踪是研究
  • 【SQL注入-02】SQL注入点的简单判断

    目录 1 实验环境 2 准备工作 3 判断是否存在SQL注入点及注入的类型 4 结论 1 实验环境 实验靶场 虚拟机 IP为172 16 1 1 本节实验靶场是在win2008系统上基于phpstudy搭建的一个简单网站 win2008及p
  • 区块链学习笔记1

    1 什么是区块链 区块链是通过去中心 化去信任的方式集体维护一个可靠数据库的技术方案 参与系统中的任意多个节点把系统一段时间内的全部的信息 数据通过密码学算法计算和记录到一个数据块 区块block 并且生成该区块的指纹用于链接下一个区块和校
  • Hadoop三种运行模式详解

    5 1 本地运行模式 本地运行模式不需要额外的设置 只需要执行响应的jar包就可以了 不需要任何的集群配置 本地运行模式其实也是一种单节点模式 Hadoop提供了两个案例 我们执行这两个案例 5 1 1 官方 grep 案例 这个案例是提供
  • Fast Global Registration 快速全局配准

    目录 1 算法过程 2 基于四元约束关系集的生成 3 基于关系集目标函数的构建 4 目标函数的优化 本文出自CSDN点云侠 爬虫自重 把自己当个人 1 算法过程 Fast Global Registration算法利用四元约束剔除匹配的关系
  • 字符串去掉小数点后取整数

    字符串去掉小数点后取整数 String str 70 2 if str contains int indexOf str indexOf str str substring 0 indexOf int matchRateInt Intege
  • VS 项目中查找中文正则表达式

    u4E00 u9FA5 u4E00 u9FA5 直接在VS中用Ctrl F或者Ctrl Shift F 在 查找内容 中输入 u4E00 u9FA5 u4E00 u9FA5 然后在 查找选项 使用正则表达式 打钩 就能找出所有这些中文字符串
  • ios gzip 压缩字符串

    1 import zlib h 2 libz 1 2 5 tbd 3 NSData gzipDeflate NSString str NSData data str dataUsingEncoding NSUTF8StringEncodin
  • CeiT阅读笔记

    CeiT Incorporating Convolution Designs into Visual Transformer 纯Transformer架构通常需要大量的训练数据和额外的监督才能获得与卷积神经网络CNNs相当的性能 为了克服这
  • Docker容器访问宿主机网络

    业务请求量小的时候 我们会把一些工程部署到同一台机器上 这些工程之间也会相互访问 如果是http的接口 我们最方便的是使用localhost带地本机的ip 不过结合docker容器后出现了问题 docker容器中localhost表示容器的
  • IDEA项目实践——JavaWeb简介以及Servlet编程实战

    系列文章目录 IDEA项目实践 创建Java项目以及创建Maven项目案例 使用数据库连接池创建项目简介 IDEWA项目实践 mybatis的一些基本原理以及案例 IDEA项目实践 动态SQL 关系映射 注解开发 IDEA项目实践 Spri
  • C# 系统应用之清除Cookies、IE临时文件、历史记录

    本文主要是项目 个人电脑使用记录清除软件 系类文章中关于清除浏览器Cookies IE临时文件 最近使用历史记录等内容 该篇文章的基本思想路线是首先了解上网历史记录的Windows中常用文件路径 再通过文件delete方法删除该文件下内容
  • leetcode86 分割链表

    题目 给你一个链表的头节点 head 和一个特定值 x 请你对链表进行分隔 使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前 你应当 保留 两个分区中每个节点的初始相对位置 示例 输入 head 1 4 3 2 5 2 x 3
  • LeetCode-216-组合总和Ⅱ

    题目链接 LeetCode 216 组合总和 解题思路 回溯算法 注意事项注释中有 代码实现 class Solution 和为 n 个数为 k 求的是组合 不要求顺序 递归的深度是 k public List