【回溯算法part03】| 39.组合总和、40.组合总和||、131.分割回文串

news2024/12/27 13:23:20

目录

🎈LeetCode39. 组合总和

🎈LeetCode40.组合总和||

 🎈LeetCode131.分割回文串


🎈LeetCode39. 组合总和

链接:39.组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

List<Integer> path;
    List<List<Integer>> result;
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        path=new ArrayList<>();
        result=new ArrayList<>();
        Arrays.sort(candidates);
        backtracking(candidates,target,0);
        return result;
    }
    public void backtracking(int[] candidates,int target,int startIndex){
         if(target==0){
             result.add(new ArrayList<>(path));
             return;
         }
         for(int i=startIndex;i<candidates.length;i++){
             path.add(candidates[i]);
             target-=candidates[i];
             if(target<0){
                 path.remove(path.size()-1);
                 target+=candidates[i];
                 return;
             }
             backtracking(candidates,target,i);
             path.remove(path.size()-1);
             target+=candidates[i];
         }
    }

🎈LeetCode40.组合总和||

链接:40.组合总和||

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次 。

注意:解集不能包含重复的组合。

 

List<Integer> path;
    List<List<Integer>> result;
    public List<List<Integer>> combinationSum2(int[] candidates, int target) {
        path=new ArrayList<>();
        result=new ArrayList<>();
        Arrays.sort(candidates);
        boolean[] used=new boolean[candidates.length];
        backtracking(candidates,target,0,used);
        return result;
    }
    public void backtracking(int[] candidates, int target,int startIndex ,boolean[] used){
        if(target==0){
            result.add(new ArrayList<>(path));
            return;
        }
        for(int i=startIndex;i<candidates.length;i++){
            if(i>0 && candidates[i]==candidates[i-1] && used[i-1]==false ){
                continue;
            }
            path.add(candidates[i]);
            target-=candidates[i];
            used[i]=true;
            if(target<0){
                path.remove(path.size()-1);
                target+=candidates[i];
                used[i]=false;
                return;
            }
            backtracking(candidates,target,i+1,used);
            path.remove(path.size()-1);
            used[i]=false;
            target+=candidates[i];
        }
    }

 🎈LeetCode131.分割回文串

链接:131.分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

List<String> list;
    List<List<String>> result;
    public List<List<String>> partition(String s) {
        list=new ArrayList<>();
        result=new ArrayList<>();
        backtracking(s,0);
        return result;
    }
    public void backtracking(String s,int index){
        if(index==s.length()){
            result.add(new ArrayList<>(list));
        }
        for(int i=index;i<s.length();i++){
            String str=s.substring(index,i+1);
            if(isH(str)){
                list.add(str);
            }else{
                continue;
            }
            backtracking(s,i+1);
            list.remove(list.size()-1);
        }
    }
    public boolean isH(String s){
        int len=s.length()-1;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)!=s.charAt(len--)){
                return false;
            }
        }
        return true;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nuxt3 fullpage.js踩坑, fullpage.js 全屏滚动

nuxt3 fullpage.js踩坑&#xff0c; fullpage.js 全屏滚动, fullpage is underfind 我用的是 nuxt 3.6.1 1.引入 fullpage.js(3.0.1), 下载地址 github链接&#xff0c;下载后放到assets文件下 app: {head: {script: [{ src: /assets/fullpage.js, type: "text/javascript…

[BitSail] Connector开发详解系列二:SourceSplitCoordinator

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 ource Connector 本文将主要介绍创建、管理Split的角色SplitCoordinator。 SourceSplitCoordinator 大数据处理框架的核心目的就是将大规模的数据拆分成为多个合理…

皂液机低功耗红外测距感应方案 免触碰红外感应模块WTU201F2 B004

近年来&#xff0c;随着卫生意识的提高&#xff0c;自动感应设备在公共场所、家庭和工作场所中变得越来越重要。在这个领域中&#xff0c;皂液机的自动感应功能成为了关键。为了提供更为智能、高效的用户体验&#xff0c;深圳唯创知音推出了全新的皂液机红外测距感应方案——WT…

自动生成的webservice客户端设置请求消息头信息

这里讲的头消息是指发送webservice请求的HTTP头信息&#xff08;MIME 头信息&#xff09;&#xff0c;而不是SOAP报文里面的Header标签内容。 package example;import mypackage.GetOperInfoRequest; import mypackage.GetOperInfoResponse; import mypackage.Webservice11; i…

怎么把MP3文件转换成OPUS,分享这两个方法给大家!

MP3和OPUS是两种常见的音频格式&#xff0c;用于存储和传输音乐、语音等内容。然而&#xff0c;随着技术的进步和需求的变化&#xff0c;有时我们需要将MP3文件转换为OPUS格式&#xff0c;以便在特定场景下获得更好的音频体验。本文将介绍两种简单而有效的方法&#xff0c;以帮…

flutter RepaintBoundary 截屏图片下载,保存图片不清晰的问题

flutter RepaintBoundary 截屏图片下载&#xff0c;保存图片不清晰的问题 前言一、什么是RepaintBoundary二、RepaintBoundary 能干什么三、RepaintBoundary 保存图片模糊的问题四、RepaintBoundary 使用小demo总结 前言 最近工作中&#xff0c;突然遇到截屏保存图片的问题&…

宝塔安装Jenkins-图文小白教程

一、Jenkins包下载 大家可以从Jenkins官网&#xff08;https://www.jenkins.io/&#xff09;根据自己的需要下载最新的版本。 但Jenkins官网下载较慢&#xff0c;容易造成下载失败。可以去国内的开源镜像网站下载Jenkins最新版本。目前博主使用的是清华大学的开源镜像网站&…

这样建立自己的『知识管理系统』,效率翻倍

在移动互联网时代&#xff0c;我们可以轻松获取大量的知识&#xff0c;但这些知识往往是碎片化的&#xff0c;没有系统性&#xff0c;缺乏深度。尽管我们努力学习了很多知识&#xff0c;但能力的提升却变得缓慢。 为了解决这个问题&#xff0c;我们需要建立一个系统化的知识体系…

【Leetcode】27.移除元素

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的…

Gerrit REST API简单介绍

Gerrit是一款开源免费的代码审查工具&#xff0c;如果其它平台想要获取gerrit数据&#xff0c;比如统计仓库代码提交数据等信息&#xff0c;可以使用Gerrit提供的REST API来获取&#xff0c;本文记录一些我使用到的Gerrit API。 目录 准备工作gerrit APIGerrit REST API使用实例…

一例.bat脚本打包样本的分析

样本的基本信息 hosts.exe MD5: 72ddf833fa206326e15c2c97679d323e SHA1: ad148ff4b7f77831b469be8bb19d32d029c23b50banish.exe MD5: 4a43ea617017d5de7d93eb2380634eee SHA1: b0af5aa27cd0e49955f1ab2d18d69f7bc8fd4d21分析过程 查壳 脱掉upx壳&#xff0c;用IDA打开&…

【文件 part 6 - 格式化读写文件函数 随机读写】

格式化读写文件函数 /* 函数调用: */ fprintf ( 文件指针&#xff0c;格式字符串&#xff0c;输出表列&#xff09;&#xff1b; fscanf ( 文件指针&#xff0c;格式字符串&#xff0c;输入表列&#xff09;&#xff1b;/** 函数功能:* 从磁盘文件中读入或输出字符* fprint…

用 ChatGPT 制作中英双语字幕

用 ChatGPT 制作中英双语字幕 0. 背景1. 使用剪映生成英文字幕2. 使用 ChatGPT 的制作中英双语字幕 0. 背景 最近在学习 AI 相关的知识&#xff0c;有很多视频是英文的。 为了提高学习效率&#xff0c;我考虑将这些视频加上中英双语字幕。 效果展示如下&#xff0c; 1. 使用…

如何用logrotate管理每日增长的日志

这篇文章主要介绍了如何用logrotate管理每日增长的日志问题&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。如有错误或未考虑完全的地方&#xff0c;望不吝赐教&#xff01; logrotate简介 logrotate is designed to ease administration of systems that gen…

数据结构--二叉树的存储结构

数据结构–二叉树的存储结构 二叉树的顺序存储 #define MaxSize 100 struct TreeNode {ElemType value;bool isEmpty; }; TreeNode tree[MaxSize];初始化 void init() {for (int i 0; i < MaxSize; i)tree[i].isEmpty true; }几个重要常考的基本操作: i的左孩子: 2 i 2…

骨传导蓝牙耳机哪个好,推荐几款造诣不错的骨传导耳机

欢迎来到骨传导耳机的奇妙世界&#xff01;这种别具一格的耳机&#xff0c;也被亲切地称为“不入耳式”耳机。它采用了一种神奇的技术&#xff0c;通过颅骨、骨迷路、内耳淋巴液和听神经之间的信号传导&#xff0c;保护我们的听力。不仅如此&#xff0c;这款耳机的开放式设计&a…

Spring七大组件

一、Spring七大组件 1.核心容器(Spring core) Spring-core相当于一个创建并管理bean的容器&#xff1a; 创建&#xff1a;底层使用反射技术创建bean的实例&#xff1b;管理&#xff1a;容器中的每个bean&#xff0c;spring容器默认按照单例模式管理&#xff1b;设计&#xff1…

0501逻辑存储结构和架构-InnoDB引擎-MySQL-数据库

文章目录 1 逻辑结构1.1 表空间1.2 段1.3 区1.4 页1.5 行 2 架构2.1 内存架构2.1.1 Buffer Pool2.1.2 change bufer2.1.3 自适应哈希2.1.4 log buffer 2.2 磁盘架构2.2.1 System Tablespace2.2.2 File-Per-Table Tablespace2.2.3 General Tablespaces2.2.4 Undo Tablespaces2.2…

NC30 缺失的第一个正整数

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可*** param nums int整型一维数组* return int整型*/public int minNumberDisappeared (int[] nums) {// write code hereHashM…

CCF-CSP真题《202303-3 LDAP》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202303-3试题名称&#xff1a;LDAP时间限制&#xff1a;12.0s内存限制&#xff1a;1.0GB问题描述&#xff1a; 题目背景 西西艾弗岛运营公司是一家负责维护和运营岛上基础设…