LeetCode:39. 组合总和

news/2025/1/14 21:48:50/

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode: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
输出: []

本题里面candidates是可以重复的,在进入递归函数的时候传递的参数是i,上一题不能重复,传递的是i+1

java">	public List<List<Integer>> combinationSum(int[] candidates, int target) {Arrays.sort(candidates);List<List<Integer>> res = new ArrayList<>();backtracking(candidates, target, 0, 0, new ArrayList<>(), res);return res;}private void backtracking(int[] candidates, int target, int index, int sum, List<Integer> path,List<List<Integer>> res) {if (sum == target) {res.add(new ArrayList<>(path));return;}for (int i = index; i < candidates.length; i++) {if (sum + candidates[i] > target)break;path.add(candidates[i]);// 注意因为数字可以重复,所以递归函数中传递的还是ibacktracking(candidates, target, i, sum + candidates[i], path, res);path.removeLast();}}

http://www.ppmy.cn/news/1563137.html

相关文章

EdgeOne安全专项实践:上传文件漏洞攻击详解与防范措施

靶场搭建 当我们考虑到攻击他人服务器属于违法行为时&#xff0c;我们需要思考如何更好地保护我们自己的服务器。为了测试和学习&#xff0c;我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料&#xff0c;供大家学习和参考&#xff0…

[人工智能自学] Python包学习-pandas

紧接上篇numpy的学习教程 本篇参考&#xff1a; Pandas 教程|菜鸟教程 官方教程 - 10分钟入门pandas joyful-pandas pandas中文教程 它建立在 NumPy 库的基础之上&#xff0c;提供了高效的数据结构和数据分析工具&#xff0c;使得在 Python 中进行数据操作变得更加容易和高效。…

深入了解 Redis Stream 数据类型及其在事件流系统中的应用

深入了解 Redis Stream 数据类型及其在事件流系统中的应用 1. 什么是 Redis Stream 数据类型&#xff1f; Redis Stream 是 Redis 5.0 引入的一种新数据类型&#xff0c;专为日志、消息队列和事件流设计。它支持高吞吐量的消息生产与消费&#xff0c;适用于构建实时事件驱动的…

UniAPP和Vue3生命周期hook

Uni-app 是一个使用 Vue.js 开发跨平台应用的框架&#xff0c;支持编译到多个平台&#xff08;如 iOS、Android、H5、微信小程序等&#xff09;。在 Uni-app 中&#xff0c;生命周期钩子&#xff08;Lifecycle Hooks&#xff09;用于在应用或页面的不同阶段执行特定的逻辑。理解…

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

git相关操作笔记

git相关操作笔记 1. git init git init 是一个 Git 命令&#xff0c;用于初始化一个新的 Git 仓库。执行该命令后&#xff0c;Git 会在当前目录创建一个 .git 子目录&#xff0c;这是 Git 用来存储所有版本控制信息的地方。 使用方法如下&#xff1a; &#xff08;1&#xff…

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里&#xff0c;阿杰正在他那充满科技感的实验室里&#xff0c;对着一堆奇奇怪怪的仪器发呆。突然&#xff0c;手机铃声如一道凌厉的剑气划破寂静&#xff0c;原来是工厂的赵厂长打来的紧急电话&#xff1a;“阿杰啊&#xff0c;咱们工厂新…