news 2026/8/1 4:11:41

js.39. 组合总和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
js.39. 组合总和

链接: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

思路:

利用回溯的思想来解决这道题。

我的想法是把每次遍历过的数字放在overlist中保存,

然后去递归。combinationSum(candidates.slice(i), target - candidates[i], [...overList])

代码:

/** * @param {number[]} candidates * @param {number} target * @return {number[][]} */ var combinationSum = function(candidates, target, overList = []) { let result = []; candidates.sort((a,b)=>a-b); for (let i = 0; i < candidates.length; i++) { if(candidates[i] > target) { continue; }else if(candidates[i] == target) { target = target - candidates[i]; overList.push(candidates[i]); break; } overList.push(candidates[i]) let temp = combinationSum(candidates.slice(i), target - candidates[i], [...overList]); result.push(...temp); overList.pop(); } if(target == 0) result.push(overList); return result; };

题解:

var combinationSum = function(candidates, target) { const ans = []; const dfs = (target, combine, idx) => { if (idx === candidates.length) { return; } if (target === 0) { ans.push(combine); return; } // 直接跳过 dfs(target, combine, idx + 1); // 选择当前数 if (target - candidates[idx] >= 0) { dfs(target - candidates[idx], [...combine, candidates[idx]], idx); } } dfs(target, [], 0); return ans; };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 22:53:50

基于红外图像的弹道导弹弹道段轨迹估计

本文仅作个人学习使用&#xff0c;若有侵权请联系作者删除基于红外图像的弹道导弹弹道段轨迹估计-ENTrajectory Estimation for a Ballistic Missile in Ballistic Phase using IR Images全文概述本文提出了一种基于地球同步卫星红外图像的弹道导弹轨迹估计算法&#xff0c;旨在…

作者头像 李华
网站建设 2026/8/1 19:45:44

Easy File Sharing Web Server

利用程序的溢出漏洞扫描目标主机查找漏洞用py实施攻击成功

作者头像 李华
网站建设 2026/8/1 15:18:36

Informer论文

Informer: Beyond Efficient Transformer for Long Sequence Time-Series ForecastingInformer是对Transformer的改造&#xff0c;分为Encoder和Decoder两部分。Informer相对Transformer的主要改进如下&#xff1a; 针对Self-attention计算复杂度高的问题&#xff1a;提出Prob …

作者头像 李华
网站建设 2026/8/1 4:27:59

2024最新!AI应用架构师必备的运维自动化工具链

2024最新&#xff01;AI应用架构师必备的运维自动化工具链&#xff1a;从部署到监控的全流程解决方案 副标题&#xff1a;覆盖模型服务化、弹性伸缩、GPU监控的实战指南 摘要/引言 问题陈述 随着大模型&#xff08;如GPT-4、Llama 3&#xff09;和实时AI应用&#xff08;如…

作者头像 李华
网站建设 2026/8/1 7:25:40

2026教资报名攻略,1月7日报名不慌乱

家人们&#xff01;2026教资报名1月7日正式开启&#xff0c;别等最后一刻手忙脚乱&#xff0c;这份从资料准备到照片制作的详细教程&#xff0c;赶紧收藏起来反复看✅&#x1f4c2; 报名资料分人群准备&#xff0c;别漏项&#xff01; &#x1f539; 在校生 1. 身份证&#xff…

作者头像 李华
网站建设 2026/7/31 22:20:47

8个AI论文工具,自考本科轻松搞定毕业写作!

8个AI论文工具&#xff0c;自考本科轻松搞定毕业写作&#xff01; AI 工具助力论文写作&#xff0c;轻松应对自考毕业挑战 在自考本科的求学路上&#xff0c;论文写作往往是许多学生最头疼的环节。无论是选题、查资料&#xff0c;还是撰写初稿、反复修改&#xff0c;都对时间和…

作者头像 李华