LeetCode-热题100:39.组合总和

题目描述

给你一个 无重复元素 的整数数组 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

代码及注释

func combinationSum(candidates []int, target int) [][]int {// 初始化结果集和当前路径res, path := make([][]int, 0), make([]int, 0)// 对候选数组进行排序sort.Ints(candidates)// 定义深度优先搜索函数var dfs func(candidates []int, pos int, target int)dfs = func(candidates []int, pos int, target int) {// 如果目标值为0,表示找到一个组合,将当前路径添加到结果集中if target == 0 {tmp := make([]int, len(path))copy(tmp, path)res = append(res, tmp)return}// 遍历候选数组,查找可能的组合for i := pos; i < len(candidates); i++ {// 如果当前候选值大于目标值,跳出循环if candidates[i] > target {break}// 将当前候选值添加到路径中,继续搜索path = append(path, candidates[i])dfs(candidates, i, target-candidates[i])// 回溯,将当前候选值从路径中移除path = path[:len(path)-1]}}// 开始深度优先搜索dfs(candidates, 0, target)// 返回结果集return res
}

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

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

相关文章

使用 Python 读取 Word 文件

使用 Python 读取 Word 文件 0. 引言安装必要的库 1. 读取和提取 Word 文件中的文本2. 提取 Word 文件中的图片 0. 引言 要使用 Python 读取 Word 文件并识别其中的对象&#xff08;如图片&#xff09;和文本&#xff0c;你可以使用 python-docx 库来处理文本&#xff0c;和 d…

大数定律与中心极限定理

大数定律与中心极限定理 大数定律切比雪夫不等式依概率收敛切比雪夫大数定律辛钦大数定律伯努利大数定律 中心极限定理列维-林德伯格中心极限定理&#xff08;Lindeberg-Levy central limit theorem&#xff09;棣莫弗-拉普拉斯中心极限定理&#xff08;De Moivre-Laplace cent…

【运放】LM358和LM324

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

python脚本for循环

使用python脚本单个输出Hello单词。 for循环实例&#xff1a; ​ [rootkvm-72 py]# cat for02.py #for i in hello: #for i in "hello": #for i in hello: for i in """hello""":print("i ", i)​ 单个字符输出结果&…

C语言运算符优先级

C语言运算符的优先级&#xff08;从高到低&#xff09;如下所示&#xff1a; 1. ()&#xff1a;括号 2. []&#xff1a;数组索引 3. . 和 ->&#xff1a;结构体和联合体成员选择 4. 和 --&#xff1a;自增和自减 5. !&#xff1a;逻辑非 6. ~&#xff1a;位取反 7. -&…

力扣---打家劫舍---动态规划

思路 1&#xff1a; 我将res[i]定义为&#xff1a;一定要取第 i 个房子的前提下&#xff0c;能获取的最大金额。那么直接用cnt从头记录到尾&#xff0c;每个房子的res最大值即是答案。那么递推公式是什么&#xff1f;res[i]max(res[i-2],res[i-1],...,res[0])nums[i]。数组初始…

如何配置nginx反向代理服务器

配置Nginx作为反向代理服务&#xff0c;你需要编辑Nginx的配置文件&#xff08;通常是nginx.conf或在其下的某个sites-available目录下的特定域名配置文件&#xff09;&#xff0c;并在其中添加反向代理相关配置块。以下是一个基本的反向代理配置示例&#xff1a; # 假设这是位…

mysql中的数据类型大全纯干货------------时间日期类型

简介(类型预览): 在mysql8.0版本中支持的类型主要有: YEAR类型表示年 DATE类型表示年,月,日 TIME类型表示时,分,秒 DATETIME类型表示年,月,日,时,分,秒 TIMESTAMP类型通常表示带时区的年,月,日,时,分,秒 数据类型单位占用字节格式下限上限YEAR年1YYY或…

C# StableDiffusion StableDiffusionSharp 脱离python臃肿的环境

目录 说明 效果 项目 代码 下载 C# StableDiffusion StableDiffusionSharp 脱离python臃肿的环境 说明 Stable Diffusion in pure C/C github地址&#xff1a;https://github.com/leejet/stable-diffusion.cpp C# Wrapper for StableDiffusion.cpp github地址&#x…

Java的三大特性之一——继承

前言 http://t.csdnimg.cn/uibg3 在上一篇中我们已经讲解过封装&#xff0c;这里就主要讲解继承与多态 继承 1.为什么需要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是现实…

zabbix6.4监控mysql数据库

目录 一、前提二、配置mysql数据库模板三、配置监控的mysql主机 一、前提 已经搭建好zabbix-server 在需要监控的mysql服务器上安装zabbix-agent2 上述安装步骤参考我的上篇文章&#xff1a;通过docker容器安装zabbix6.4.12图文详解&#xff08;监控服务器docker容器&#xf…

RAII 与智能指针

1.什么是 RAII 1.概念 Resource Acquisition Is Initialization 资源获取即初始化。一般分为 3 步&#xff0c;当我们在main函数中声明一个局部对象的时候&#xff0c;会自动调用构造函数进行对象的初始化&#xff0c;当整个main函数执行完成后&#xff0c;自动调用析构函数来…

用Compute Shader处理图像数据后在安卓机上不能正常显示渲染纹理

1&#xff09;用Compute Shader处理图像数据后在安卓机上不能正常显示渲染纹理 2&#xff09;折叠屏适配问题 3&#xff09;Prefab对DLL中脚本的引用丢失 4&#xff09;如何优化Unity VolumeManager中的ReplaceData 这是第378篇UWA技术知识分享的推送&#xff0c;精选了UWA社区…

css的box-shadow详解

CSS的box-shadow属性用于在元素框上添加阴影效果。它可以为元素提供外阴影或内阴影&#xff0c;并且可以控制阴影的颜色、偏移距离、模糊半径以及扩展半径。 box-shadow属性的基本语法如下&#xff1a; box-shadow: h-shadow v-shadow blur spread color inset;下面是各个参数…

超快的 AI 实时语音转文字,比 OpenAI 的 Whisper 快4倍 -- 开源项目 Faster Whisper

faster-whisper 这个项目是基于 OpenAI whisper 的模型&#xff0c;在上面的一个重写。 使用的是 CTranslate2 的这样的一个库&#xff0c;CTranslate2 是用于 Transformer 模型的一个快速推理引擎。 在相同精度的情况下&#xff0c;faster-whisper 的速度比 OpenAI whisper …

web开发必备之跨域

1.什么是跨域&#xff1f; 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 举个例子或许比较生动 当前所在页面请求的页面是否同域原因https://www.csdn.net/https://blog.csdn.net/weixin_56703682√同源&#xff08;同域名同协议同端口&#x…

【网站项目】294火车票订票系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

EI Scopus双检索| 2024年智能交通与未来出行国际会议(CSTFM 2024)

会议简介 Brief Introduction 2024年智能交通与未来出行国际会议(CSTFM 2024) 会议时间&#xff1a;2024年10月18日-20日 召开地点&#xff1a;中国杭州 大会官网&#xff1a;CSTFM 2024-2024 International Conference on Smart Transportation and Future Mobility(CSTFM 202…

解决修改数据后,前端页面不显示问题

如图&#xff0c;修改数据后&#xff0c;在前端页面不显示的问题&#xff0c;可能是因为缓存问题 解决方案 以为Edge浏览器为例 打开设置左边栏点击隐私&#xff0c;搜索和服务选择清除 Internet Explorer 的浏览数据点击删除&#xff0c;重新启动前端界面即可。

大数据专家3个月自学计划

本人有6年Java开发经验&#xff0c;目前在岗中&#xff0c;之前通过视频教学自学过Hadoop生态技术、flume、kafka、Redis、hive、spark、flink、sqoop、azkaban、ozie、habse、presto、kylin等大数据相关技术&#xff0c;希望利用3个月时间复习&#xff0c;成为大数据专家。以下…