LeetCode:39. 组合总和

embedded/2025/1/14 10:29:43/

跟着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/embedded/153812.html

相关文章

redis:安装部署、升级以及失败回退

安装部署 一、准备工作 1. 检查系统要求 确保你的服务器满足 Redis 的基本要求: 操作系统:支持的 Linux 发行版(如 Ubuntu, CentOS)内存:至少 4GB(根据实际应用需求调整)CPU:单核或多核 CPU磁盘空间:足够的磁盘空间用于数据存储和日志记录2. 更新系统软件包 在开始…

<C++学习>C++ std 多线程教程

C std 多线程教程 理解多线程的概念 多线程是一种并发编程技术&#xff0c;它允许程序同时运行多个任务。每个线程共享同一进程的资源&#xff08;如内存&#xff09;&#xff0c;但拥有独立的执行路径。多线程编程在现代 C 中变得更加便捷和安全&#xff0c;标准库提供了强大…

卫星电话打通救灾生命线,确保“找得到人、通得上话”

从日喀则地震的救援信息&#xff0c;我们可以发现&#xff0c;应急救援卫星通信设备日益小型化、便携化、集成化&#xff0c;且国产化率大幅提升&#xff0c;与17年前汶川地震救援时所使用的体积庞大、架设复杂的卫星通信设备相比&#xff0c;如今的设备不仅在形态上更为轻巧灵…

【HTML+CSS+JS+VUE】web前端教程-8-标签之文本

常用文本标签 特别提示: 常用文本标签和段落是不同的,段落代表一段文本,而文本标签一般表示文本词汇。 <!DOCTYPE html> <html lang="en"

K8s 集群 IP 地址管理指南(K8s Cluster IP Address Management Guide)

K8s 集群 IP 地址管理指南 概述 你是否在小型初创公司或大型企业工作&#xff0c;并正在为公司评估 Kubernetes&#xff1f;你可能正在考虑运行十几个或更多的 Kubernetes (K8s) 集群。你期望每个集群支持几百个 K8s 节点&#xff0c;每个节点可能有 50 到 100 个 K8s Pod。这…

JVM面试相关

JVM组成 什么是程序计数器 详细介绍Java堆 什么是虚拟机栈 能不能解释一下方法区&#xff1f; 直接内存相关 类加载器 什么是类加载器&#xff0c;类加载器有哪些 什么是双亲委派模型 类加载过程 垃圾回收 对象什么时候可以被垃圾回收器回收 JVM垃圾回收算法有那些 JVM的分代…

【Rust】常见集合

目录 思维导图 一、Rust常用集合 1. Rust标准库中的集合概述 2. 常用集合类型 2.1 向量&#xff08;Vector&#xff09; 2.2 字符串&#xff08;String&#xff09; 2.3 哈希映射&#xff08;Hash Map&#xff09; 二、向量&#xff08;Vec&#xff09; 1. 向量的概述…

Cloudflare中转Gemini API,国内免费爽用,Gemini编程,音视频,多模态能力测试

视频版&#xff1a; Cloudflare中转顶级大模型API&#xff0c;国内免费爽用&#xff0c;Gemini编程&#xff0c;音视频&#xff0c;多模态能力测试 谷歌Gemini是所有一线顶级大模型当中唯一一个API可以免费白嫖的。本期视频&#xff0c;我们借助互联网大善人Cloudflare来中转一…