首页 > 编程语言 >代码随想录算法训练营第23天 | 回溯进阶

代码随想录算法训练营第23天 | 回溯进阶

时间:2024-07-27 14:18:43浏览次数:14  
标签:index 进阶 23 int List 随想录 candidates path target

2024年7月25日

题39. 组合总和
由于每个元素可以用多次,要想到在每次递归里还要循环即可。
代码首先给各个候选排序,从小到大依次提高门槛,每次回溯就提高index。

class Solution {

    List<List<Integer>> res;
    List<Integer> path;
    int target;
    int[] candidates;

    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        Arrays.sort(candidates);
        this.target = target;
        this.candidates = candidates;
        res = new ArrayList<>();
        path = new ArrayList<>();
        for(int i=0;i<candidates.length;i++){
            path.add(candidates[i]);
            int index = i;
            backtracking(index);
            path.clear();
        }
        return res;
    }

    public void backtracking(int index){
        int sum = path.stream().mapToInt(Integer::intValue).sum();
        if(sum==target){
            res.add(new ArrayList<>(path));
            return;
        }
        for(int i=index;i<candidates.length;i++){
            if(sum+candidates[i]>target){
                return;
            }else{
                path.add(candidates[i]);
                backtracking(index);
                path.removeLast();
                index+=1;
            }
        }
    }
}

标签:index,进阶,23,int,List,随想录,candidates,path,target
From: https://www.cnblogs.com/hailicy/p/18326890

相关文章

  • FL Studio 24.1.1.4234官方中文版全新发布
     在当今这个数字化的时代,音乐制作已经成为了一项越来越受欢迎的艺术形式。FLStudio作为一款功能强大的数字音频工作站(DAW),一直以其出色的性能和丰富的功能吸引着全球的音乐创作者。今天,我们就来详细探讨一下FLStudio24.1.1.4239中文版在音乐制作中的卓越表现以及它为创作者......
  • 2024年第四届网络通信与信息安全国际学术会议(ICNCIS 2024,8月23-25)
    2024年第四届网络通信与信息安全国际学术会议(ICNCIS2024)将于2024年8月23-25日于杭州召开。会议围绕网络通信在信息安全领域中的最新研究成果,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验,扩大专业网络,面对面交流新思想......
  • 【九大高校联合支持,学生易中,已确认ISSN号,见刊检索有保障!】2024年电力电子与电气工程国
    随着科技的不断进步和社会的发展,电气工程在各个领域都发挥着重要作用,它涉及到了电力系统、电子技术、自动控制等多个方面。近年来,人工智能、大数据、云计算等技术也不断更迭,使得电气工程也更加注重智能化、数字化的发展以及结合人工智能、机器学习的应用。时下,电气工程仍......
  • 「代码随想录算法训练营」第二十二天 | 回溯算法 part4
    491.非递减子序列题目链接:https://leetcode.cn/problems/non-decreasing-subsequences/题目难度:中等文章讲解:https://programmercarl.com/0491.递增子序列.html视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v/题目状态:有思路,借助ChatGPT通过思路:在之前代码的基......
  • Midjourney提示词-动物系列-23
    divinewhitefoxfairyisbytheriverinwonderland,distantview,,Goldenratio,full-bodypicture,Smallhead,fluffybig-tailednine-tailedfox+9,Chineseart,cleverlight,hazybeauty,Mohrbacher'sFoxofProtection,stream,enchanting,immortal,fluff......
  • JS基础与进阶讲解
    JS基础讲解9.1、JS基础语法JavaScript是一种用于在客户端(即用户的浏览器)上运行的编程语言。它是一种脚本语言,可以直接嵌入到HTML页面中,并由浏览器解释和执行。在客户端环境中,JavaScript可以与用户交互,操作和修改网页的内容、结构和样式。它可以用于处理用户输入、响......
  • Mistral新旗舰决战Llama 3.1,最强开源Large 2 123B,扛鼎多语言编程全能王
    【新智元导读】紧跟着Meta的重磅发布,MistralLarge2也带着权重一起上新了,而且参数量仅为Llama3.1405B的三分之一。不仅在编码、数学和多语言等专业领域可与SOTA模型直接竞争,还支持单节点部署。昨天正式发布的Llama3.1模型,让AI社区着实为之兴奋。但是仔细一想就能发现......
  • VMware Fusion Pro 虚拟机 免费了附最新版 13.5.2-23775688 下载地址
    VMwareFusionPro可以帮助用户在Mac上安装Windows、Linux等多种操作系统,最重要的是无需重启电脑切换系统,可以和MacOS系统同时运行,就类似于MacOS安装了一个应用。对于家庭用户来说足够简单,对于IT专业人员,开发人员和企业来说足够强大。VMwareFusionPro是一款强大的......
  • 【MySQL进阶之路 | 高级篇】表级锁之S锁,X锁,意向锁
    1.从数据操作的粒度划分:表级锁,页级锁,行锁为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资源的事情(涉及获取、检查、释放锁等动作)。因此数据库系统需要在高并发响应和系统性能两方面进行......
  • 【MySQL进阶之路 | 高级篇】行锁之记录锁和间隙锁
    1.InnoDB的行锁行锁(rowlock)也称为记录锁。顾名思义,就是锁住某一行(某个记录row)。需要注意的是,MySQL服务层并没有行锁机制,行级锁只在存储引擎层实现。优点:锁定力度小,发生锁冲突概率低,可以实现的并发度高。缺点:对于锁的开销比较大,加锁会比较慢,容易出现死锁的情况。InnoDB与M......