代码随想录算法训练营第二十天|39. 组合总和、40.组合总和II、131.分割回文串

39. 组合总和

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_bilibili关于回溯算法,我公众号里已经讲完了,并且将回溯算法专题整理成一本PDF,该PDF共5万字,包含了30多张树形结构图、15道力扣精选回溯题目,21篇回溯法精讲文章,由浅入深,绝对是全网最精良的回溯算法资料!关注公众号「代码随想录」后台回复:回溯算法,就可以获取了,赶快下载看一看吧, 视频播放量 87277、弹幕量 655、点赞数 1959、投硬币枚数 1654、收藏人数 511、转发人数 94, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!,回溯算法套路②组合型回溯+剪枝【基础算法精讲 15】,带你学透回溯算法-组合问题的剪枝操作(对应力扣题目:77.组合)| 回溯法精讲!,贪心算法理论基础!,【LeetCode 每日一题】40. 组合总和 II | 手写图解版思路 + 代码讲解,带你学透回溯算法(理论篇)| 回溯法精讲!,组合与排列的区别,回溯算法求解的时候,有何不同?| LeetCode:46.全排列,回溯算法求解全排列,如何去重?| LeetCode:47.全排列 II,带你学透回溯算法-分割回文串(对应力扣题目:131.分割回文串)| 回溯法精讲!,这就是传说中的N皇后? 回溯算法安排!| LeetCode:51.N皇后icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1KT4y1M7HJ

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

40.组合总和II

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:回溯算法中的去重,树层去重树枝去重,你弄清楚了没?| LeetCode:40.组合总和II_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 59586、弹幕量 966、点赞数 1899、投硬币枚数 1869、收藏人数 354、转发人数 101, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:还得用回溯算法!| LeetCode:17.电话号码的字母组合,带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!,回溯算法求解全排列,如何去重?| LeetCode:47.全排列 II,贪心算法理论基础!,回溯算法解决子集问题,如何去重?| LeetCode:90.子集II,带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!,带你学透回溯算法-组合问题的剪枝操作(对应力扣题目:77.组合)| 回溯法精讲!,带你学透回溯算法-分割回文串(对应力扣题目:131.分割回文串)| 回溯法精讲!,组合与排列的区别,回溯算法求解的时候,有何不同?| LeetCode:46.全排列,这就是传说中的N皇后? 回溯算法安排!| LeetCode:51.N皇后icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV12V4y1V73A

思路:定义一个used数组来去重。去重主要是在数层上操作。如果used[i-1]==false&&candidates[i]==candidates[i-1],那么说明是在树层上,直接跳过;而如果used[i-1]==true,说明在树枝上,加入path中。因为在递归指的是树枝,在递归中used的值为true,该树枝递归完毕后,把used变为false。以此来判断是树层还是树枝上。

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

131.分割回文串

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:带你学透回溯算法-分割回文串(对应力扣题目:131.分割回文串)| 回溯法精讲!_哔哩哔哩_bilibili关于回溯算法,我公众号里已经讲完了,并且将回溯算法专题整理成一本PDF,该PDF共5万字,包含了30多张树形结构图、15道力扣精选回溯题目,21篇回溯法精讲文章,由浅入深,绝对是全网最精良的回溯算法资料!关注公众号「代码随想录」后台回复:回溯算法,就可以获取了,赶快下载看一看吧, 视频播放量 92052、弹幕量 849、点赞数 2318、投硬币枚数 2057、收藏人数 497、转发人数 109, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:带你学透回溯算法(理论篇)| 回溯法精讲!,带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!,贪心算法理论基础!,带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法,带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!,回溯算法套路①子集型回溯【基础算法精讲 14】,带你学透回溯算法-组合问题的剪枝操作(对应力扣题目:77.组合)| 回溯法精讲!,从此再也不怕动态规划了,动态规划解题方法论大曝光 !| 理论基础 |力扣刷题总结| 动态规划入门,手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找,回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1c54y1e7k6

思路: 回溯切割字符串,动态规划先求出字符串区间i到j是否是回文串。

class Solution {List<List<String>> result = new ArrayList<>();List<String> path = new ArrayList<>();boolean[][] isPalindrome;public List<List<String>> partition(String s) {isPalindrome = new boolean[s.length()][s.length()];for (int i = 0; i < s.length(); i++) {for (int j = i; j >= 0; j--) {if (i == j) {isPalindrome[i][j] = true;} else if (i - j == 1) {isPalindrome[j][i] = (s.charAt(i) == s.charAt(j));} else {isPalindrome[j][i] = ((s.charAt(i) == s.charAt(j)) && isPalindrome[j+1][i-1]);}}}backtracking(s, 0);return result;}public void backtracking(String s, int startIndex) {if (startIndex >= s.length()) {result.add(new ArrayList<>(path));return;}for (int i = startIndex; i < s.length(); i++) {if (isPalindrome[startIndex][i]) {path.add(s.substring(startIndex, i + 1));backtracking(s, i + 1);path.remove(path.size() - 1);}}}
}

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

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

相关文章

机器学习基础02_特征工程

目录 一、概念 二、API 三、DictVectorize字典列表特征提取 四、CountVectorize文本特征提取 五、TF-IDF文本1特征词的重要程度特征提取 六、无量纲化预处理 1、MinMaxScaler 归一化 2、StandardScaler 标准化 七、特征降维 1、特征选择 VarianceThreshold 底方差…

得物App入选诚信案例,10万正品样品库夯实高品质消费

近日&#xff0c;以“加强企业诚信建设 赋能经济社会发展”为主题的“2024年全国企业诚信建设大会”在烟台市召开。此次大会由中国企业联合会、中国企业家协会主办&#xff0c;山东省企业联合会、山东省企业家协会、烟台市企业联合会、烟台大学承办。大会期间&#xff0c;得物A…

036 RabbitMQ消息确认 死信队列 延时队列

文章目录 生产者确认模式application.propertiesMessageController.javaMessageConfirmRallback.java 生产者回退模式application.propertiesMessageConfirmRallback.javaMessageController.java 消费者手动确认application.propertiesConsumerAckQueueListener.java 死信队列延…

docker desktop运行rabittmq容器,控制台无法访问

docker desktop运行rabittmq容器&#xff0c;控制台无法访问 启动过程&#xff1a;…此处缺略&#xff0c;网上一大堆 原因 原因是在Docker上运行的RabbitMQ&#xff0c;默认情况下是没有启用管理插件和管理页面的 解决办法 使用命令 docker exec -it 容器id /bin/bash 进…

Tailwind 安装使用

Tailwind 安装使用 前言 CSS原子化——本文将详细介绍如何在Vue Vite npm环境下安装、配置并使用Tailwind CSS&#xff01; 文章目录 Tailwind 安装使用前言一、Tailwind 在 Vue Vite 项目中的安装1. 创建Vue项目2. 安装Tailwind CSS3. 初始化Tailwind配置4. 修改文件 tai…

centos7安装playwright踩坑记录

Python版本安装 Installation | Playwright Python 1. 安装pytest-playwright pip3 install pytest-playwright报错&#xff1a;提示找不到pytest-playwright 原因&#xff1a;服务器Python版本3.6.8太低&#xff0c;貌似pytest-playwright最低支持3.7 解决方法&#xff1…

函数(C语言)

1&#xff1a;函数的概念 函数的概念我们在初中的时候就已经听过了。 在C语言中也引入了函数&#xff0c;也可以叫子程序 C语言中的函数就是一个完成某项特定的任务的一小段代码 这段代码是有特殊的写法和调用方法的。其实C语言的程序也是由无数个小的函数组成的。 也就是&…

VMWare安装包及安装过程

虚拟机基本使用 检查自己是否开启虚拟化 如果虚拟化没有开启&#xff0c;需要自行开启&#xff1a;百度加上自己电脑的品牌型号&#xff0c;进入BIOS界面开启 什么是虚拟机 所谓的虚拟机&#xff0c;就是在当前计算机系统中&#xff0c;又开启了一个虚拟系统 这个虚拟系统&…

基于SVD奇异值分解的图像压缩算法(Python实现)

前言 SVD其实和PCA类似&#xff0c;就是丢入一个特征矩阵 X &#xff0c;输出另外一个特征矩阵 X′ , X′ 的维度要比原来的X 要低。并且里面的变量都是原来的变量的线性组合&#xff0c;所以含义也变得不好解释。 简单来说就是数据压缩&#xff0c;特征降维的一种技术&#…

国产AI图片工具,全部免费亲测实用!

近AI生图功能火出圈了&#xff0c;各家大厂都拿出了看家本领&#xff0c;今天就来聊聊即梦AI、通义万相、奇域AI和腾讯元宝的AI生图功能&#xff0c;看看它们各有什么特色吧&#xff01; 一、Dreamina 字节旗下的AI智能平台&#xff0c;简单实用的图片生成&#xff0c;对中国元…

C++ 二叉搜索树

二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值 它的左右…

推荐一款3D建模软件:Agisoft Metashape Pro

Agisoft Metashape Pro是一款强大的多视点三维建模设计辅助软件&#xff0c;Agisoft Metashape是一款独立的软件产品&#xff0c;可对数字图像进行摄影测量处理&#xff0c;并生成3D空间数据&#xff0c;用于GIS应用&#xff0c;文化遗产文档和视觉效果制作&#xff0c;以及间接…

IntelliJ+SpringBoot项目实战(四)--快速上手数据库开发

对于新手学习SpringBoot开发&#xff0c;可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握&#xff0c;如果快速上手数据库开发&#xff0c;可以先按照本文介绍的方式使用JdbcTemplat…

Linux高阶——1110—线程安全问题解决方法

1、同步、异步、阻塞、非阻塞 同步过程&#xff1a;发起调用&#xff0c;调用者需要等待被调用者的结果 异步过程&#xff1a;发起调用&#xff0c;无需等待被调用的结果&#xff0c;当有结果后&#xff0c;此结果传出&#xff0c;无需主动获取 阻塞和非阻塞&#xff1a;发起…

STM32cubemx+Proteus仿真和keil5联合调试

前面两步 STM32cubemx生成代码 https://blog.csdn.net/weixin_52733843/article/details/143637304 Proteus新建工程 https://blog.csdn.net/weixin_52733843/article/details/143578853 1 *Proteus仿真联合调试* 在Proteus中&#xff0c;双击STM32F103C6芯片&#xff0c…

初识算法 · 位运算常见总结(1)

目录 前言&#xff1a; 位运算基本总结 部分题目代码 前言&#xff1a; ​本文的主题是位运算&#xff0c;通过常见的知识点讲解&#xff0c;并且会附上5道简单的题目&#xff0c;5道题目的链接分别为&#xff1a;191. 位1的个数 - 力扣&#xff08;LeetCode&#xff09; 1…

visualvm远程连接Docker容器中部署的java应用并监控

visualvm远程连接Docker容器中部署的java应用 前言 jdk1.8中自带了&#xff0c;java11中需要单独下载 下载地址 visualvm下载地址 简介 java虚拟机监控&#xff0c;故障排查及性能分析工具。 网络配置 局域网与docker内网打通&#xff0c;请参考&#xff1a;办公网络与Docker内…

NVIDIA RTX 系统上使用 llama.cpp 加速 LLM

NVIDIA RTX 系统上使用 llama.cpp 加速 LLM 文章目录 NVIDIA RTX 系统上使用 llama.cpp 加速 LLMllama.cpp 概述llama.cpp 在 NVIDIA RTX 上的加速性能使用 llama.cpp 构建的开发人员生态系统使用 llama.cpp 在 RTX 平台上加速的应用程序开始使用 适用于 Windows PC 的 NVIDIA …

信息收集系列(二):ASN分析及域名收集

内容预览 ≧∀≦ゞ 信息收集系列&#xff08;二&#xff09;&#xff1a;ASN分析及域名收集前言一、ASN 分析1. 获取 ASN 码2. 使用 ASNMap 获取 IP 范围3. 将 IP 范围转化为 IP 列表 二、关联域名收集1. 顶级域&#xff08;TLD&#xff09;收集测试方法 2. 根域名收集常用方法…

揭秘:b站可以通过弹幕查询到发送者吗?答案是:不可行

查找发送者 发弹幕被找到 最近&#xff0c;我的一个好兄弟遇到了这样一个问题&#xff1a;他在b站发弹幕&#xff0c;结果被人找到了。他对此很困惑&#xff1a;“发送弹幕不是匿名的吗&#xff1f;只有评论才能看到用户名啊&#xff0c;难道发弹幕也可以被找到吗&#xff1f…