首页 > 其他分享 >【力扣】-39. 组合总和|刷题打卡-JS

【力扣】-39. 组合总和|刷题打卡-JS

时间:2023-12-29 15:36:21浏览次数:43  
标签:39 target 组合 示例 res JS candidates path 打卡

给你一个 无重复元素 的整数数组 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
输出: []
[2],

提示:

  • 1 <= candidates.length <= 30
  • 2 <= candidates[i] <= 40
  • candidates 的所有元素 互不相同
  • 1 <= target <= 40

代码:

var combinationSum = function (candidates, target) {
    let res = [];
    candidates = candidates.sort((a, b) => a - b);
    dfs(candidates, target, 0, candidates.length, [], res);
    return res;
};

var dfs = function (candidates, target, begin, len, path, res) {
    if (target === 0) {
        res.push(JSON.parse(JSON.stringify(path)));
        return;
    }

    for (let i = begin; i < len; i++) {
        if (target - candidates[i] < 0) break;
        if (i !== 0 && candidates[i] === candidates[i-1]) continue; // 

        path.push(candidates[i]);
        dfs(candidates, target - candidates[i], i, len, path, res);
        path.pop();
    }
}

标签:39,target,组合,示例,res,JS,candidates,path,打卡
From: https://blog.51cto.com/u_16101563/9028272

相关文章

  • 【力扣】-41. 缺失的第一个正数|刷题打卡-JS
    给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例1:输入:nums=[1,2,0]输出:3示例2:输入:nums=[3,4,-1,1]输出:2示例3:输入:nums=[7,8,9,11,12]输出:1提示:1<=nums.length<=5*......
  • 在 PyCharm 中编写 Vue 项目,你可以按照以下步骤进行: 1. **安装 Vue.js 插件**:在 PyCh
    在PyCharm中编写Vue项目,你可以按照以下步骤进行:1.**安装Vue.js插件**:在PyCharm中,选择`File->Settings…->Plugins`,搜索Vue并点击安装,安装后重启PyCharm¹²。2.**设置JavaScript**:支持Vue语法,选择`File->Settings…->Languages&Frameworks->JavaSc......
  • python json.dump 将字典写文件json文件后多了一个花括号"}",读取时报错:json.decoder.
    问题复现我的字典格式:importjsond={'Demo':{'Total_Result':'Pass','info':{'test3':'Pass'}},'10.0.0.111':{'Total_Result':'Pass','info':{'test......
  • js中三种URI编码方式比较
    一、实例比较数据传递常需要编码后传递,接收还需反编译,定义url:varurl="https://www.cnblogs.com/?username='小森森'&password='666666'";escape与unescapeconsole.log(escape(url));//编码console.log(unescape(escape(url)));//解码结果:https%3A//www.cnblog......
  • Windows环境检验NodeJs安装是否成功
    Windows环境检验NodeJs安装是否成功检验方法1、win+R打开运行窗口,在此窗口输入cmd命令编辑2、进入命令提示符窗口,分别输入以下命令,显示版本号,则安装成功node-v:显示安装的nodejs版本npm-v:显示安装的npm版本编辑如上图说明安装成功我本机的环境版本低一点因为是安装鸿蒙IDE自动安......
  • 【五期杨志】CCF-A(CVPR'22) Dual-Key Multimodal Backdoors for Visual Question Answe
    WalmerM,SikkaK,SurI,etal.Dual-KeyMultimodalBackdoorsforVisualQuestionAnswering[C]//ProceedingsoftheIEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR).2022:15375-15385.  目前多模态学习在多种领域方面取得了重要进展,但......
  • js 利用Audio播放文件列表
    1、主要利用Audio的监听事件addEventListener,监听到声音播放结束ended,播放下一个文件audio.addEventListener('ended',function(){console.log('音频播放结束');});2、示例:varvoiceList=['1.wav','2.wav','3.wav']varvoiceInde......
  • nodejs学习05——mongoose
    简介Mongoose是一个对象文档模型库,官网http://www.mongoosejs.net/作用:方便使用代码操作mongodb数据库初体验//1.安装mongoose//2.导入mongooseconstmongoose=require('mongoose');//设置strictQuery为truemongoose.set('strictQuery',true);//3.连接......
  • 在Python中,如果你想查找特定的SQLite数据库文件(例如'mydatabase.db'),你可以使用os模块
    这是Python中os.walk()函数的常见用法¹²⁴⁵⁶。os.walk()函数用于递归遍历指定目录及其子目录,并返回一个生成器,每次迭代都会返回一个包含三个元素的元组:当前目录的路径、当前目录下所有子目录的列表和当前目录下所有文件的列表¹²⁴⁵⁶。在fordirpath,dirnames,filenamesi......
  • 「Java开发指南」如何用MyEclipse搭建JSF/Primefaces和Spring(二)
    本教程将引导大家完成为JavaServerFaces(JSF)生成软件组件的过程,在本文中您将学习到如何:从数据库表到现有项目搭建配置支持JSF2.0的服务器部署搭建的应用程序在上文中,我们介绍了如何创建一个Web项目、从数据库表搭建及配置服务器等,本文将继续介绍如何部署应用程序!更多MyE......