回溯--39. 组合总和/medium 理解度C

39. 组合总和

  • 1、题目
  • 2、题目分析
  • 3、复杂度最优解代码示例
  • 4、适用场景

1、题目

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

 

示例 1:

输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
解释:
2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是一个候选, 7 = 7 。
仅有这两种组合。

示例 2:

输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]

示例 3:

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

 

提示:

  • 1 <= candidates.length <= 30
  • 2 <= candidates[i] <= 40
  • candidates 的所有元素 互不相同
  • 1 <= target <= 40
Related Topics
  • 数组
  • 回溯

2、题目分析

用递归解决问题时,通常是以2个角度来构思解决方案:自底向上、或自顶向下

本问题主要采用自顶向下的方式思考。(自顶向下,往往意味着在向下传递前先进行逻辑处理)

3、复杂度最优解代码示例

    List<List<Integer>> res = new ArrayList<>();int target = 0;public List<List<Integer>> combinationSum(int[] candidates, int target) {List<Integer> visit = new ArrayList<>();// 在递归函数只有读,没有改的场景,就考虑存为全局变量this.target = target;this.dfs(candidates, 0, visit, 0);return res;}public void dfs(int[] candidates, int index, List<Integer> visit, int sum) {if (sum == target) {res.add(new ArrayList<>(visit));return;}if (sum > target) {return;}for (int i = index; i < candidates.length; i++) {// 添加该元素visit.add(candidates[i]);// 递归下一个元素。注意:由于每一个元素可以重复使用,下一轮搜索的起点依然是 i,这里非常容易弄错this.dfs(candidates, i, visit, sum + candidates[i]);// 回溯时,去除该元素visit.remove(visit.size() - 1);}}

4、适用场景

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

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

相关文章

探索工业以太网交换机的新纪元:满足多元化市场需求

在当今数字化的时代&#xff0c;工业以太网交换机作为信息网络的核心枢纽&#xff0c;扮演着至关重要的角色。它们连接着各种设备&#xff0c;实现数据的快速传输与稳定交换&#xff0c;为工业自动化、物联网和智能制造提供了可靠的基础设施。随着数字化转型的不断深入&#xf…

媒体查询的使用

媒体查询的使用 media media-type and (media-feature) {/* 在满足特定媒体条件时应用的CSS样式 */ }media-type&#xff1a;可选&#xff0c;媒体类型&#xff0c;例如 all&#xff08;所有设备&#xff09;、print&#xff08;打印预览&#xff09;、screen&#xff08;屏幕…

VBoxManage 命令行使用

VBoxManage&#xff1a; 序号命令作用1VBoxManage list vms# 查看当前所有虚拟机2VBoxManage list runningvms # 查看当前正在运行的虚拟机3VBoxManage startvm 虚拟机名 --type gui # 启动虚拟机4VBoxManage startvm 虚拟机名 --type headless# 无前端图形界面方式启动虚拟机…

2024第16届中国西部教育博览会在成渝双城举办

2024第16届中国西部教育博览会在成渝双城举办 邀请函 主办单位&#xff1a;中国西部教体融合博览会组委会 承办单位&#xff1a;重庆港华展览有限公司 时间&#xff1a;2024年3月30--31日 地点&#xff1a;成都世纪城新国际会展中心 时间&#xff1a;2024年6月22--23日 地…

【Linux取经路】进程控制——进程等待

文章目录 一、进程创建1.1 初识 fork 函数1.2 fork 函数返回值1.3 写时拷贝1.4 fork 的常规用法1.5 fork 调用失败的原因1.6 创建一批进程 二、进程终止2.1 进程退出场景2.2 strerror函数2.3 errno全局变量2.4 程序异常2.5 进程常见退出方法2.6 exit 函数2.7 _exit 函数和 exit…

week03day03(文件操作、正则表达式1)

一、文件操作 1.数据持久化&#xff08;数据本地化&#xff09; -- 将数据保存在硬盘 程序中的数据默认是保存在运行内存中的&#xff0c;保存在运行内存中的数据在程序运行结束后会自动释放。如果希望在程序结束后&#xff0c;数据仍可以使用&…

新春送福,暖心探访

春节将至&#xff0c;岁寒情暖。为了深入了解辖区困境老人的生活状况和真实需求&#xff0c;让困境老人感受到党和政府的关爱与温暖&#xff0c;营造幸福和谐的节日气氛。2024年1月31日下午&#xff0c;在长沙市湘江新区民政与社会保障局的支持下&#xff0c;学联社区携手长沙市…

dockers- php

在Dockerfile里面安装php7.4的GD库 - 知乎

Https加密超文本传输协议的运用

一、https的相关知识 1.1 https的简介 HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加…

基于微服务的高考志愿智能辅助决策系统(附源码)

目录 一.引言 1、编写目的 2、系统功能概述 二.功能分析 三.微服务模块 1、微服务用户相关模块 &#xff08;1&#xff09;用户注册 &#xff08;2&#xff09;用户登录 &#xff08;3&#xff09;用户信息管理 &#xff08;4&#xff09;用户操作 2、微服务文件云存…

React Router 完美教程(下)

我们书接上回&#xff0c;继续我们的React Router 路由之路&#xff1a; 我们到目前为止都没有用到 state、useEffect、redux等状态管理器。但也达到了我们的设计目的。 注意&#xff0c;action 返回的结果 可以在组件中使用 useActionData() 来获取。就像 useLoaderData() 的使…

Linux上使用OpenCvSharp

前言 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。OpenCvSharp是一个OpenCV的 .Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenC…

STL - string类

1、标准库中的string类 1.1、string类了解 字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持&#xff0c;其接口类似于标准字符容器的接口&#xff0c;但添加了专门用于操作单字节字符字符串的设计特性string类是使用char (即作为它的字符类型&#xff0c;使用…

MD5算法:高效安全的数据完整性保障

摘要&#xff1a;在数字世界中&#xff0c;确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中&#xff0c;Message Digest Algorithm 5&#xff08;MD5&#xff09;算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…

web应用课——(第四讲:中期项目——拳皇)

代码AC Git地址&#xff1a;拳皇——AC Git链接

Maven:一些常见问题

1、ReasonPhrase: Forbidden a.注意用户的权限以及角色role的设置&#xff0c;一般是没有权限才会被禁止的。 2、Failed to collect dependencies a.需要把parent工程&#xff0c;也就是package是pom的那个工程先install一下&#xff0c;或者deploy b.需要注意在设置的工厂里面…

87 SpringMVC 上传文件在业务代码中拿不到文件数据

前言 呵呵 最近在整理文件上传部分的东西的时候, 发现了一个问题 文件上传部分 有一些基础的问题, 可以参见 29 SpringMVC 上传文件未生成临时文件, 我们这里上传的文件的大小是 大于 sizeThreshold 的 SpringMVC 上传文件的时候会生成一个临时文件, 我想直接使用这个临时…

【开源】SpringBoot框架开发海南旅游景点推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…

【DB2】—— 一次关于db2 sqlcode -420 22018的记录

情况描述 在DB2 10.5数据库中执行以下SQL语句&#xff1a; SELECT * FROM aa WHERE aa.ivc_typ IN (213,123,12334,345)其中aa.ivc_typ列的类型为VARCHAR(10) 关于执行会发生以下情况 类型转换&#xff1a;SQL引擎会尝试把IN列表中的整数常量转换为VARCHAR(10)类型&#xf…

【从浅到深的算法技巧】优先队列

5.6 优先队列 许多应用程序都需要处理有序的元素&#xff0c;但不一定要求它们全部有序&#xff0c; 或是不一定要一次就将它们排序。很多情况下我们会收集一些元素&#xff0c; 处理当前键值最大的元素&#xff0c;然后再收集更多的元素&#xff0c;再处理当前键值最大的元素&…