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

java数据结构与算法刷题-----LeetCode216. 组合总和 III

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

在这里插入图片描述

解题思路
  1. 此题是77题的扩展题,仅仅加了一个条件而已,就是找到的k个数,必须等于n。
  2. 而77题,仅仅是找到k个数即可,不需要等于n
🏆LeetCode77. 组合https://blog.csdn.net/grd_java/article/details/136539120
增加条件后的枝剪条件
  1. 77题本身的枝剪操作依然需要
  2. 如果当前组合的值已经>n了,说明没有递归的必要了,因为怎么都不可能==n了。可以进行枝剪操作
代码

在这里插入图片描述

class Solution {int k,n;//用来记录k和n,以免传参太多影响代码阅读性public List<List<Integer>> combinationSum3(int k, int n) {this.k = k;//最多几个数一组进行组合this.n = n;//k个数需要组成的数字是多少List<List<Integer>> lists = new ArrayList<List<Integer>>();//用于保存答案//使用数组来记录枚举过程中的结果,优点:速度快,击败100%用户必备。//缺点:理解较难,且需要动态维护数组下标,实现链表的效果Integer[] records = new Integer[k];//用于记录当前枚举(回溯枚举)的组合backTracking(lists,records,0,1,0);//回溯算法,参数的含义看下面回溯方法的注释return lists;}/*** 回溯* @param lists 答案需要的* @param records 当前正在组合回溯的,也就是当前正在枚举* @param row  代表records的下标,他表示当前是尝试枚举第几个数* @param column 代表当前可以枚举的数的范围的左边界,必须<=9 ,因为题目规定只能使用数字1-9.例如column当前是4,则可选范围为[4,9]* @param sum 用于记录当前records中元素的和。*/public void backTracking(List<List<Integer>> lists, Integer[] records,int row,int column,int sum){//如果column>9 就没有数可以枚举了,因为只能1-9的数。sum>n也没必要继续进行当前枚举,因为我们要找的是sum == nif(column>9 || sum>n) return;else if(records.length + 9 - column + 1 < k) return;//剪枝操作,如果剩下可用的数字,不够组成k个数,就不继续递归else{//否则继续递归records[row] = column;//当前数字取column放入row位置int curSum = sum+column;//记录取完当前数字后的和if( curSum > n) return;//剪枝:如果这个值>n,就没必要继续枚举,因为我们只要 = n的if(row == k-1){//如果row == k-1,说明刚好k个数,因为row是数组下标,从0开始if(curSum == n)//找到k个数,如果这k个数刚好和为n,就找到一个正确答案lists.add(List.of(records));}else{//如果不够k个数,继续枚举backTracking(lists,records,row+1,column+1,curSum);}//不取当前数字column放入row位置,选择从后面继续找backTracking(lists,records,row,column+1,sum);}}
}

相关文章:

java数据结构与算法刷题-----LeetCode216. 组合总和 III

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路 此题是77题的扩展题&#xff0c;仅仅加了一个条件而已&…...

vscode remote ssh 连接 ubuntu/linux报错解决方法

1、问题: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fin…...

Normalizer(归一化)和MinMaxScaler(最小-最大标准化)的区别详解

1.Normalizer&#xff08;归一化&#xff09;&#xff08;更加推荐使用&#xff09; 优点&#xff1a;将每个样本向量的欧几里德长度缩放为1&#xff0c;适用于计算样本之间的相似性。 缺点&#xff1a;只对每个样本的特征进行缩放&#xff0c;不保留原始数据的分布形状。 公式…...

覆盖element-ui的el-menu样式记录:背景图片、菜单图标、菜单高亮与鼠标悬浮高亮、调整子菜单等样式

页面中修改el-menu 设置background-color"transparent"&#xff0c;menu菜单下的背景图片则能正常显示了 <el-menuclass"el-menu-demo"mode"horizontal"background-color"transparent"><el-menu-item index"1">…...

接口自动化测试从入门到高级实战!

接口测试背景和必要性 接口测试是测试系统组件间接口&#xff08;API&#xff09;的一种测试&#xff0c;主要用于检测内部与外部系统、内部子系统之间的交互质量&#xff0c;其测试重点是检查数据交换、传递的准确性&#xff0c;控制和交互管理过程&#xff0c;以及系统间相互…...

【STC8A8K64D4开发板】第2-14讲:I2C总线的应用

第2-14讲&#xff1a;I2C总线的应用 学习目的了解I2C总线的特点。掌握I2C地址的定义&#xff0c;对I2C地址要有深刻的了解&#xff0c;之后再看到I2C接口设备中描述的7位地址或8位地址&#xff0c;不会再有疑惑。掌握STC8A8K64D4系列单片机I2C的特点以及编程方法。掌握通过I2C读…...

前端框架的发展史

随着互联网技术的飞速发展和用户需求的日益增长&#xff0c;前端开发作为构建用户界面和交互体验的关键环节&#xff0c;经历了从简单到复杂、从静态到动态的演变过程。在这个过程中&#xff0c;前端框架作为提升开发效率和代码质量的重要工具&#xff0c;也经历了多个阶段的发…...

Unity Hololens2开发|(二)MRTK3导入和配置

目录 1.从 MRTK3 模板项目开始2.从新项目开始2.1 创建新的 Unity 项目2.2 使用混合现实功能工具导入所需的依赖项和 MRTK3 包2.3 打开 Unity 项目2.4 在导入后配置 MRTK 配置文件2.5 配置 OpenXR 相关设置2.6 使用模板项目资源1.从 MRTK3 模板项目开始 获取并试用 MRTK3 最简单…...

VMware下载与安装

准备一个Linux的系统&#xff0c;成本最低的方式就是在本地安装一台虚拟机&#xff0c;VMware是业界最好用的虚拟机软件之一 官网&#xff1a;https://www.vmware.com/ 下载页面&#xff1a;https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html …...

9、Linux-安装JDK、Tomcat和MySql

目录 一、安装JDK 1、传输JDK文件&#xff08;.tar.gz&#xff09; 2、解压 3、备份环境变量 4、配置环境变量 5、重新加载环境变量 6、验证&#xff08;java -version&#xff09; 二、安装Tomcat 1、传输文件&#xff0c;解压到/usr/local 2、进入Tomcat的bin目录 …...

深度学习图像算法工程师--面试准备(2)

深度学习面试准备 深度学习图像算法工程师–面试准备&#xff08;1&#xff09; 深度学习图像算法工程师–面试准备&#xff08;2&#xff09; 文章目录 深度学习面试准备前言一、Batch Normalization(批归一化)1.1 具体步骤1.2 BN一般用在网络的哪个部分 二、Layer Normaliza…...

解锁安卓开发利器:深度探析ADB【安卓开发】

引言 在安卓开发与维护过程中&#xff0c;我们经常会遇到一些限制&#xff0c;比如无法直接访问某些系统功能&#xff0c;或者在某些定制系统中 受到限制 。为了解决这些问题&#xff0c;我们需要一种有效的工具来管理和调试安卓设备&#xff0c;而这时候ADB&#xff08;Andro…...

【Python】FTP库的介绍及用法

目录 1、应用场景 2、FTP-标准库 1、应用场景 FTP库&#xff08;ftplib&#xff09;在Python中的应用场景主要包括&#xff1a; 文件上传和下载&#xff1a; 通过FTP服务器&#xff0c;可以提供用于上传和下载文件的功能。这在需要在服务器和客户端之间共享数据的情况下非常…...

C++——string模拟实现

前言&#xff1a;上篇文章我们对string类及其常用的接口方法的使用进行了分享&#xff0c;这篇文章将着重进行对这些常用的接口方法的内部细节进行分享和模拟实现。 目录 一.基础框架 二.遍历字符串 1.[]运算符重载 2.迭代器 3.范围for 三.常用方法 1.增加 2.删除 3.调…...

从零开始:神经网络(2)——MP模型

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 神经元相关知识&#xff0c;详见从零开始&#xff1a;神经网络——神经元和梯度下降-CSDN博客 1、什么是M-P 模型 人…...

Python调用edge-tts实现在线文字转语音

edge-tts是一个 Python 模块&#xff0c;允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。 项目源码 GitHub - rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an…...

植物病害识别:YOLO甘蔗叶片病害识别分类数据集

YOLO甘蔗叶片病害识别数据集, 包含尾孢菌叶斑病&#xff0c;眼斑病&#xff0c;健康&#xff0c;红腐病&#xff0c;锈病&#xff0c;黄叶病6个常见病类别&#xff0c;3300多张图像&#xff0c;yolo标注完整&#xff0c;全部原始图像&#xff0c;未应用增强。 适用于CV项目&…...

pyqt QTextEdit 捕获enter按键

参考&#xff1a; https://blog.csdn.net/qq_27061049/article/details/101550616 方法一&#xff1a; 在PyQt中&#xff0c;可以通过重写QTextEdit的keyPressEvent()函数来捕获Enter按键。下面是示例代码&#xff1a; from PyQt5.QtWidgets import QApplication, QMainWindo…...

一劳永逸的方法解决:LNK1168无法打开 xxx.exe 进行写入 报错问题

这种错误的产生原因&#xff1a; 运行程序退出不是按正常流退出&#xff0c;是按窗口右上角的 “X” 来关闭程序&#xff0c;但是后台的xxx.exe控制台程序还在运行&#xff1b;修改程序的代码后再运行&#xff0c;就会报LNK1168的错误&#xff1b; 报错示例&#xff1a; 解决方…...

程序员的金三银四求职宝典:面试技巧分享

​​​​​​​随着春天的到来,程序员们迎来了求职的旺季——金三银四。在这个时期,各大公司纷纷开放招聘,为求职者提供了丰富的选择机会。然而,如何在众多的面试中脱颖而出,成功获得心仪的职位,就需要掌握一些有效的面试技巧。下面,就让我们一起来探讨一下金三银四求职…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...