news 2026/6/23 18:29:43

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/6/23 4:43:29

从“幻觉”到“诚实”:OpenAI 如何重新定义大模型的不靠谱问题

如果你对 Agent 可信性、模型行为、安全边界、长期对齐问题 感兴趣&#xff0c;欢迎关注 LuhuiDev。 我会在全平台持续更新这个系列&#xff0c;把论文、实验、工程直觉&#xff0c;慢慢拆给你看。OpenAI 如何重新定义大模型的不靠谱问题&#xff1f; 过去两年&#xff0c;几乎…

作者头像 李华
网站建设 2026/6/23 3:29:48

基于最优指派策略的弹道导弹目标数据关联算法

本文仅供学习使用&#xff0c;如有侵权&#xff0c;请私信联系本人删除Data Association Algorithm for Ballistic MissileTarget based on Optimal Assignment Strategy基于最优指派策略的弹道导弹目标数据关联算法文章脉络全文概述本文针对弹道导弹目标在突防过程中面临的密集…

作者头像 李华
网站建设 2026/6/15 11:06:41

通达信主图MACD

{}高1:REF(HHV(H,150),3); 低1:REF(LLV(L,150),3); H3:高1-(高1-低1)*0.5; 中轴:REFDATE(H3,DATE); B1:EMA(C,12); B2:EMA(C,26); B3:B1-B2; WDIF:EMA(EMA(EMA(C,3),3),3)B3,COLORWHITE; WDEA:EMA(WDIF,9),COLORMAGENTA,LINETHICK3; MACD:2*(WDIF-WDEA);{} STICKLINE(MACD>0…

作者头像 李华
网站建设 2026/6/23 11:18:49

Mistral 3 模型解析与部署实战:从 Large 3 到 Mini-stral

总部位于巴黎的 Mistral AI 宣布推出其最新一代 ​开源权重模型家族​&#xff0c;包括 Mistral Large 3 以及另外三款小型、稠密模型。所有模型均采用 Apache​ 2.0 许可证 发布&#xff0c;这意味着它们可以​自由用于商业用途、自行托管以及微调​。 Mistral 可以说是欧洲“…

作者头像 李华