LeetCode-数组/回溯-No40组合总和II

题目:

        给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次 。
        注意:解集不能包含重复的组合。 

示例 1:

  • 输入: candidates = [10,1,2,7,6,1,5], target = 8,
  • 输出:
  • [
  • [1,1,6],
  • [1,2,5],
  • [1,7],
  • [2,6]
  • ]

示例 2:

  • 输入: candidates = [2,5,2,1,2], target = 5,
  • 输出:
  • [
  • [1,2,2],
  • [5]
  • ]                                                                                 

解答:

思路1:

  • 在No39CombinationSum基础上,每次回溯从下一个位置开始。
  • 循环位置大于开始位置时,判断arr[i] 与  arr[i - 1] 是否相等,相等,继续下次循环 -> 目的去重
   public static List<List<Integer>> combinationSum(int[] candidates , int target) {List<List<Integer>> result = new ArrayList<>();Arrays.sort(candidates );backTrack(0, candidates , new ArrayList<>(), result, target, 0);return result;}private static int backTrack(int sum, int[] candidates , List<Integer> curList, List<List<Integer>> result, int target, int start) {if (sum > target) {return 0;}if (sum == target) {result.add(new ArrayList<>(curList));return 1;} else {for (int i = start; i < candidates .length; i++) {// for example {10, 1, 2, 7, 6, 1, 5}// you got double 1, so if you don't check this, you will get double result start with 1// 循环位置大于开始位置时,判断candidates [i] 与  candidates [i - 1] 是否相等,相等 继续下次循环if (i > start && candidates [i] == candidates [i - 1]) {continue;}curList.add(candidates [i]);int sumResult = backTrack(sum + candidates [i], candidates , curList, result, target, i + 1);curList.remove(curList.size() - 1);if (sumResult != -1) {break;}}}return -1;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有手机怎么办呐!高考成绩出来了:请不要吹灭别人的灯——早读(逆天打工人爬取热门微信文章解读)

结婚的时候红包随礼随多少呢 引言Python 代码第一篇 洞见 高考成绩出来了&#xff1a;请不要吹灭别人的灯第二篇结尾 为什么是这个标题呢&#xff1f; 是因为摸鱼看足球直播 主播好兄弟结婚 他老婆问他要红包 引言 今天早上停电了 大概是在3点多的时候 我本身一直都没有开空调…

Javac编译器

Java语言的编译器是一段不确定的操作过程&#xff0c;可能是讲Java文件转变为class文件的过程&#xff0c;也可能是指虚拟机的后端编译&#xff0c;讲字节码转换为机器码的过程&#xff0c;还肯是静态提前编译器直接讲Java文件编译为本地机器代码的过程。 前端编译器&#xff…

HTML5五十六个民族网站模板源码

文章目录 1.设计来源高山族1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 中国民族界面演示1.5 关于高山族界面演示1.6 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.ne…

TypeError: Object of type bytes is not JSON serializable

从您提供的错误跟踪信息来看&#xff0c;问题在于您尝试将一个bytes类型的对象作为JSON数据传递给requests.post方法的json参数。但是&#xff0c;json参数只接受可以被json.dumps序列化为JSON格式的Python数据类型&#xff08;如字典、列表、字符串、数字、None、True和False&…

FreeRTOS中任务控制块和任务句柄的作用

1. 任务控制块&#xff08;Task Control Block&#xff0c;TCB&#xff09; 任务控制块 是FreeRTOS内核用于管理任务的关键数据结构。它包含了任务执行所需的各种信息。每个任务对应一个唯一的TCB。 主要作用&#xff1a; 存储任务状态&#xff1a;TCB包含任务的当前状态信息…

数字化转型第三步:数字化业务创新与发展,提升收入和利润

引言&#xff1a;之前笔者的文章发布了企业数字化转型业务部分&#xff0c;如【开源节流】如何通过数字化转型增强盈利能力&#xff1f;企业供应链数字化转型如何做&#xff1f;让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…

java Object中有哪些方法

在Java中&#xff0c;java.lang.Object类是所有类的父类。每个类都直接或间接地继承自Object。以下是Object类中定义的主要方法&#xff1a; Object类的方法 public final Class<?> getClass() 返回一个表示对象运行时类的Class对象。 Object obj new Object(); Class…

基于jeecgboot-vue3的Flowable流程-自定义业务表单处理(二)-挂接自定义业务表单

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、增加一个根据服务名称动态寻找对应自定义表单组件的hooks import { ref, reactive, computed, markRaw, onMounted, defineAsyncComponent } from vue; import { listCustomForm } fro…

PostgreSQL 高可用性与灾难恢复策略(七)

1. 备份与恢复策略 1.1 常见备份策略 1.1.1 定期物理备份 使用 pg_basebackup 工具创建物理备份&#xff0c;备份数据库的整个数据目录。 pg_basebackup -D /path/to/backupdir -Fp -Xs -P -U username -h hostname1.1.2 逻辑备份 使用 pg_dump 工具创建逻辑备份&#xff…

在Java中,final、finally和finalize

在Java中&#xff0c;final、finally和finalize是三个不同的概念&#xff0c;它们有着各自独特的用途和语法。以下是对它们的详细解释&#xff1a; final final关键字可以用来修饰类、方法和变量。 修饰类&#xff1a;表示该类不能被继承。 public final class MyClass {// 类…

Redis之优惠券秒杀

文章目录 全局ID生成器添加优惠券实现优惠券秒杀下单超卖问题悲观锁和乐观锁相关文章乐观锁执行逻辑乐观锁解决超卖问题 一人一单功能超卖问题相关文章一人一单执行逻辑代码实现集群模式下锁失效 分布式锁基于Redis的分布式锁Redis实现分布式锁流程实现分布式锁初级版本分布式锁…

RabbitMQ(消息队列)

RabbitMQ 它是消息中间件&#xff0c;是在消息的传输过程中保存消息的容器&#xff0c;实现应用程序和应用程序之间通信的中间产品。目前主流消息队列通讯协议是AMQP&#xff08;二进制传输&#xff0c;支持多种语言&#xff09;、JMS&#xff08;HTTP传输&#xff0c;只支持J…

20240626(26.3) 财经要闻汇总

重点关注 ► 李强&#xff1a;我们注重固本培元&#xff0c;增强经济发展的基础支撑能力&#xff0c;长短结合、标本兼治打好政策“组合拳”&#xff0c;扎实推动高质量发展。坚持把新技术新产业的发展特征、中国的国情特点及各个地方的优势特色结合起来&#xff0c;在提升创新…

要离职了,记录一下个人在用的 Mac 应用

大家好&#xff0c;我是楷鹏。 通用 飞书 说起来不信&#xff0c;第一个推荐的是【飞书】&#xff0c;飞书是目前用过最舒服的项目管理应用了。 单拎出来一个飞书文档&#xff0c;功能和体验远超市面上腾讯文档、石墨文档、语雀等等。 现在飞书还支持个人版&#xff0c;No…

【系统架构设计师】六、信息系统基础知识(定义|分类|企业信息化系统|生命周期|建设原则|开发方法)

目录 一、信息系统的定义 二、信息系统的分类 三、企业使用的信息化系统 四、信息系统的生命周期 五、信息系统建设原则 六、信息系统的开发方法 6.1 结构化方法 6.2 原型法 6.3 构件化开发方法 6.4 面向服务的方法 6.5 面向对象的方法 6.6 敏捷方法 历年真题考情&#x…

还是国产大模型靠谱!这里有一个OpenAI API用户特别搬家计划

近日&#xff0c;一场风波在科技圈引起了广泛的关注。6月25日凌晨&#xff0c;OpenAI向大量开发者发送邮件&#xff0c;通知他们&#xff1a;“您的组织有流量来自来OpenAl目前不支持的地区。从7月9日起&#xff0c;我们将采取额外措施&#xff0c;停止OpenAI不支持的国家和地区…

iOS开发者模式自带弱网测试工具

弱网测试的思路 弱网功能测试&#xff1a;2G/3G/4G、高延时、高丢包 无网状态测试&#xff1a;断网功能测试、本地数据存储 用户体验关注&#xff1a;响应时间、页面呈现、超时文案、超时重连、安全及大流量风险 网络切换测试&#xff1a;WIFI → 4G/3G/2G → 网多状态切换…

①分析胃癌组蛋白脱乙酰酶HDS模型-配对转录组差异

目录 HDS评分构建 ①数据加载 ②评分计算 做样本及评分展示图 ①数据处理 ②进行作图 分析配对的单细胞及转录组胃癌数据的 HDS评分,数据源于gastric-cancer - GitCode①胃癌单细胞和配对转录组揭示胃肿瘤微环境(文献和数据)_代码笔记:处理迄今为止最大的单细胞胃癌数…

Java OA系统通知公告模块

### 使用Spring Boot实现OA通知公告模块 使用Spring Boot框架实现一个支持多种形式公告发布、设置发布时间和有效期&#xff0c;以及公告发布后推送通知的模块。 #### 项目结构 结构组织项目&#xff1a; OA_Notification_Module/ ├── src/ │ ├── main/ │ │ …

计算机相关专业讨论

在2024年高考结束后&#xff0c;数百万高三学子正站在人生的十字路口&#xff0c;面对着选择大学专业的重要决策。在众多选项中&#xff0c;计算机相关专业&#xff0c;包括计算机科学与技术、人工智能、网络安全、软件工程等&#xff0c;长期以来被视为“万金油”的选择——它…