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

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

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

开机卡在‘reboot and select proper boot device’?别慌,这3个BIOS设置检查点帮你5分钟搞定

开机卡在‘reboot and select proper boot device’&#xff1f;三步排查法助你快速恢复系统 遇到电脑开机时突然显示"reboot and select proper boot device"的提示&#xff0c;确实会让人心头一紧。这个报错意味着系统在启动时找不到可引导的设备&#xff0c;但别担…...

工业品检测智慧平台

奇妙智能工业品检测智慧平台是一个专注于工业品质量检测与智能分析的数字化平台&#xff0c;旨在通过人工智能、大数据和物联网技术提升工业品检测的效率和准确性。该平台通常服务于制造业、物流、能源等领域&#xff0c;提供从产品缺陷识别到质量评估的全流程解决方案。核心功…...

金诃藏药新零售系统开发

市场需求分析 藏药市场具有独特性和地域性&#xff0c;新零售系统需兼顾传统医药文化与现代消费习惯。分析目标用户群体&#xff08;如中老年人、养生爱好者&#xff09;的线上购买偏好&#xff0c;结合藏药产品特性&#xff08;如药材稀缺性、文化附加值&#xff09;设计功能模…...

Phi-3-mini-4k-instruct-gguf实战案例:用它为AI课程自动生成课后思考题与参考答案

Phi-3-mini-4k-instruct-gguf实战案例&#xff1a;用它为AI课程自动生成课后思考题与参考答案 1. 项目背景与需求 作为一名AI课程讲师&#xff0c;我每周都需要为不同章节准备课后思考题和参考答案。这个过程既耗时又费力&#xff0c;直到我发现了Phi-3-mini-4k-instruct-ggu…...

5分钟解锁图片转3D打印:开源神器ImageToSTL完全指南

5分钟解锁图片转3D打印&#xff1a;开源神器ImageToSTL完全指南 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. …...

Media Extended B站插件:在Obsidian中完美播放B站视频的终极指南

Media Extended B站插件&#xff1a;在Obsidian中完美播放B站视频的终极指南 【免费下载链接】mx-bili-plugin 项目地址: https://gitcode.com/gh_mirrors/mx/mx-bili-plugin 想在Obsidian笔记中直接播放B站视频吗&#xff1f;Media Extended B站插件为你提供了完美的解…...

从一次跨域业务中断说起:用Wireshark抓包带你复盘MPLS Option B的故障排查全流程

从一次跨域业务中断说起&#xff1a;用Wireshark抓包带你复盘MPLS Option B的故障排查全流程 那天凌晨3点17分&#xff0c;监控大屏突然跳出红色告警——核心业务系统的跨域交易成功率断崖式下跌至12%。作为网络团队的值班负责人&#xff0c;我立刻意识到这绝非普通故障&#x…...

基于STM32的正弦波测频计设计与实现(优化篇)

1. 从院赛到工业级&#xff1a;STM32正弦波测频计的优化之路 去年参加院赛时&#xff0c;我和队友用STM32F103C8T6在24小时内赶工完成的测频计&#xff0c;虽然基本功能达标&#xff0c;但测量下限只能到720Hz&#xff0c;1MHz以上误差明显增大&#xff0c;特别是遇到幅值较小的…...

BepInEx终极指南:5步掌握Unity游戏插件框架的完整使用方法 [特殊字符]

BepInEx终极指南&#xff1a;5步掌握Unity游戏插件框架的完整使用方法 &#x1f3ae; 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 想要为心爱的Unity游戏添加新功能、修改游戏体…...

别再只测理论值了!手把手教你用ZCU104实测AXI DMA真实带宽(附Vivado工程与源码)

ZCU104实战&#xff1a;AXI DMA真实带宽测试与性能优化全解析 在FPGA开发中&#xff0c;AXI DMA的性能直接影响着视频流处理、高速数据采集等关键应用的实时性。很多开发者习惯依赖理论峰值带宽作为设计依据&#xff0c;却在实际部署时遭遇性能瓶颈。本文将带您深入ZCU104开发板…...