当前位置: 首页 > 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; 解决方…...

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

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

如何快速掌握Sunshine游戏串流:新手的完整入门指南

如何快速掌握Sunshine游戏串流&#xff1a;新手的完整入门指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为无法在平板、手机或电视上流畅玩PC游戏而烦恼吗&#xff1f;想…...

终极开源回放工具:ROFL-Player 7大核心特性深度解析与实战应用指南

终极开源回放工具&#xff1a;ROFL-Player 7大核心特性深度解析与实战应用指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player ROFL-Pla…...

Router 解决 NavigationDuplicated 错误

vue-router.esm.js:2054 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: “/operation/permission?tabroles”这个错误 NavigationDuplicated: Avoided redundant navigation to current location 是 vue-router 的一个经典…...

Qwen3-0.6B-FP8部署全攻略:环境配置+模型调用一步到位

Qwen3-0.6B-FP8部署全攻略&#xff1a;环境配置模型调用一步到位 想快速体验一个轻量级但能力不俗的大语言模型吗&#xff1f;Qwen3-0.6B-FP8镜像为你提供了一个开箱即用的解决方案。这个镜像基于通义千问最新的Qwen3-0.6B模型&#xff0c;通过vLLM进行高效部署&#xff0c;并…...

告别卷积!用Point Transformer搞定点云分割:保姆级代码解读与S3DIS实战

告别卷积&#xff01;用Point Transformer搞定点云分割&#xff1a;保姆级代码解读与S3DIS实战 点云分割一直是计算机视觉领域的硬骨头——无序性、稀疏性、非均匀性三大特性让传统卷积神经网络束手无策。当Transformer在NLP领域大杀四方时&#xff0c;我们算法工程师早就按捺不…...

PyTorch 2.8镜像实战案例:使用/data盘高效管理模型与数据集的完整流程

PyTorch 2.8镜像实战案例&#xff1a;使用/data盘高效管理模型与数据集的完整流程 1. 镜像环境概述 PyTorch 2.8深度学习镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化&#xff0c;为各类AI任务提供开箱即用的开发环境。这个镜像特别适合需要处理大规模模型和数据的研究人员…...

巧用Simscape Multibody位置控制实现高精度关节速度跟踪

1. 当Joint模块遇上速度控制需求 第一次用Simscape Multibody做机器人仿真时&#xff0c;我就被它的物理建模能力惊艳到了——直到我想给关节加个简单的速度控制。明明是最基础的需求&#xff0c;Joint模块的驱动选项里却只有Force和Motion两种模式。这就像买了辆跑车发现没有油…...

寄存器与操作寄存器(小白级教学)

前言到目前为止&#xff0c;计算机依然只能读入二进制&#xff0c;此时肯定会有读者好奇了&#xff0c;那我们电脑中各种各样的图案&#xff0c;声音还有颜色都是如何来的呢&#xff0c;因为电脑本身就是硬件&#xff0c;硬件内部中&#xff0c;1就是代表高电压&#xff0c;0就…...

横河 GX90XA-10-U2N-CC无纸记录仪采集模块 适用于GP10,GP20

无纸记录仪SMARTDAC GX10/GX20通过触摸屏为用户提供更直观的操作。模块化结构支持丰富的输入/输出模块&#xff0c;并将不断扩展。灵活的用户界面 多种显示功能标准显示画面清晰的指示通道数据及其单位、标记&#xff0c;以及报警日志、信息日志和其他事件日志信息。 触摸屏实现…...

AI小白必看!收藏这份「大模型×行业场景」地图,轻松找到你的AI起步点

本文以《大模型与垂直行业综述》为基础&#xff0c;提供了一张「大模型 行业场景」地图&#xff0c;帮助企业认清AI项目方向、起步点和潜在风险。文章建议从「低价值 低投入」场景入手&#xff0c;如内容生产、数字人视频等&#xff0c;积累经验后再逐步挑战高价值项目。同时…...