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

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


一、39. 组合总和

解题代码C++:

class Solution {
private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex) {if (sum == target) {result.push_back(path);return;}// 如果 sum + candidates[i] > target 就终止遍历for (int i = startIndex; i < candidates.size() && sum + candidates[i] <= target; i++) {sum += candidates[i];path.push_back(candidates[i]);backtracking(candidates, target, sum, i);sum -= candidates[i];path.pop_back();}}
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {result.clear();path.clear();sort(candidates.begin(), candidates.end()); // 需要排序backtracking(candidates, target, 0, 0);return result;}
};

题目链接/文章讲解/视频讲解:
https://programmercarl.com/0039.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.html



二、40.组合总和II

解题代码C++:

class Solution {
private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex, vector<bool>& used) {if (sum == target) {result.push_back(path);return;}for (int i = startIndex; i < candidates.size() && sum + candidates[i] <= target; i++) {// used[i - 1] == true,说明同一树枝candidates[i - 1]使用过// used[i - 1] == false,说明同一树层candidates[i - 1]使用过// 要对同一树层使用过的元素进行跳过if (i > 0 && candidates[i] == candidates[i - 1] && used[i - 1] == false) {continue;}sum += candidates[i];path.push_back(candidates[i]);used[i] = true;backtracking(candidates, target, sum, i + 1, used); // 和39.组合总和的区别1,这里是i+1,每个数字在每个组合中只能使用一次used[i] = false;sum -= candidates[i];path.pop_back();}}public:vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<bool> used(candidates.size(), false);path.clear();result.clear();// 首先把给candidates排序,让其相同的元素都挨在一起。sort(candidates.begin(), candidates.end());backtracking(candidates, target, 0, 0, used);return result;}
};

题目链接/文章讲解/视频讲解:
https://programmercarl.com/0040.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CII.html



三、131.分割回文串

解题代码C++:

class Solution {
private:vector<vector<string>> result;vector<string> path; // 放已经回文的子串void backtracking (const string& s, int startIndex) {// 如果起始位置已经大于s的大小,说明已经找到了一组分割方案了if (startIndex >= s.size()) {result.push_back(path);return;}for (int i = startIndex; i < s.size(); i++) {if (isPalindrome(s, startIndex, i)) {   // 是回文子串// 获取[startIndex,i]在s中的子串string str = s.substr(startIndex, i - startIndex + 1);path.push_back(str);} else {                                // 不是回文,跳过continue;}backtracking(s, i + 1); // 寻找i+1为起始位置的子串path.pop_back(); // 回溯过程,弹出本次已经添加的子串}}bool isPalindrome(const string& s, int start, int end) {for (int i = start, j = end; i < j; i++, j--) {if (s[i] != s[j]) {return false;}}return true;}
public:vector<vector<string>> partition(string s) {result.clear();path.clear();backtracking(s, 0);return result;}
};

题目链接/文章讲解/视频讲解:
https://programmercarl.com/0131.%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E4%B8%B2.html

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

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

相关文章

avue-crud顶部操作按钮插槽;avue-crud列数据插槽;avue-crud行操作按钮插槽

1.avue-crud顶部操作按钮插槽&#xff1b; <template slot"menuLeft" slot-scope"{ size }"><div class"left"><div class"btn"><el-button type"primary" size"small" click"onBatchR…

新能源汽车小三电系统

小三电系统 新能源电动汽车的"小三电"系统&#xff0c;一般指车载充电机(OBC)、车载 DC/DC 变换器&#xff0c;和高压直流配电盒(PDU)。一辆纯电动汽车一般配备一台OBC 和一台车载 DC/DC 变换器。OBC将外部输入的交流电转化为直流电输出给电池&#xff0c;DC/DC衔接…

zabbix配置

1 下载zabbix 1 配置yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release- 5.0-1.el7.noarch.rpm yum clean all yum makecache fast 完成后会出现zabbix.repo文件 2安装zabbix服务 yum -y install zabbix-server-mysql zabbix-web-mysql z…

使用stream流合并多个List(根据实体类特定属性合并)

开发情景 现有多个List集合,其中都是一样的实体类,这里我想根据实体类的特定属性将它们合并在一起,形成一个最终的List集合。 这里主要用到了Stream流的flatMap方法与reduce方法。 flatMap:可以将多个Stream流合并在一起,形成一个Stream流。 reduce:可以将Stram流中的元…

初级爬虫实战——哥伦比亚大学新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

力扣经典题:删除字符使字符串变好

char* makeFancyString(char* s) {int sizestrlen(s);char*arr(char*)malloc(sizeof(char)*size1);if(size<3){return s;}arr[0]s[0];arr[1]s[1];int p2;for(int j2;j<size;j){if(s[j]!s[j-1]||s[j]!s[j-2]){arr[p]s[j];p;}}arr[p]\0;return arr; } 此代码的细节很多&am…

mac笔记本执行定时任务

1.mac本地设置一个定时任务每小时执行一次&#xff0c;在/Users/xxx/go/src/runing目录下执行命令&#xff1a;./git_push.sh 在macOS中&#xff0c;你可以使用crontab来设置定时任务。打开终端并执行以下步骤&#xff1a; 1.打开当前用户的crontab编辑器&#xff1a; crontab …

大模型训练准备工作

一、目录 1 大模型训练需要多少算力&#xff1f; 2. 大模型训练需要多少显存&#xff1f; 3. 大模型需要多少数据量训练&#xff1f; 4. 训练时间估计 5. epoch 选择经验 6. 浮点计算性能测试 二、实现 1 大模型训练需要多少算力&#xff1f; 训练总算力&#xff08;Flops&…

python知识点总结(三)

python知识点总结三 1、有一个文件file.txt大小约为10G&#xff0c;但是内存只有4G&#xff0c;如果在只修改get_lines 函数而其他代码保持不变的情况下&#xff0c;应该如何实现? 需要考虑的问题都有那些?2、交换2个变量的值3、回调函数4、Python-遍历列表时删除元素的正确做…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextPicker)

滑动选择文本内容的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextPicker(options?: {range: string[] | string[][] | Resource | TextPickerRangeContent[] | Te…

Redis-Sentinel哨兵

Redis Sentinel可以通过心跳检测的方式监视多个主服务器以及它们属下的所有从服务器&#xff0c;并在某个主服务器下线时自动对其实施故障转移。 1 启动Sentinel 一个Sentinel配置文件至少需要包含以下选项&#xff0c;用于指定Sentinel要监视的主服务器&#xff1a; sentine…

PyTorch深度学习框架:综合入门与应用指南

引言&#xff1a;掌握PyTorch版本信息的必要性 在深度学习的广阔天地中&#xff0c;PyTorch以其卓越的灵活性和易用性&#xff0c;成为了研究人员和开发者的首选框架。了解正在使用的PyTorch版本对于保证代码的兼容性和项目的顺利进行至关重要。尤其是在多人合作和多环境切换的…

MC0206 小码哥的英语

小码哥在做英语单选题的时候突然想到了一个很有意思的问题&#xff1a;单选题的答案都是A或者B&#xff0c;那么很多道题目的答案组成的就是一个A和B组成的字符串。如果两个相邻的题目的答案是相同的&#xff0c;小码哥就可以修改这两个题目的答案&#xff0c;改成都是A、都是B…

前端流式(stream)请求,获取持续响应的方式

在网络请求中,流(stream)表示持续接收数据的过程。使用流,可以逐步获取服务器响应,而不是等待整个响应完成后一次性获取。 Axios 通过监听响应对象的 data 事件,可以实现流式请求,主要的写法有直接 pipe 流和手动监听事件两种。使用流可以实现大文件或数据的流传输,有效…

深度解读:如何解决Image-to-Video模型视频生成模糊的问题?

Diffusion Models视频生成-博客汇总 前言&#xff1a;目前Image-to-Video的视频生成模型&#xff0c;图片一般会经过VAE Encoder和Image precessor&#xff0c;导致图片中的信息会受到较大损失&#xff0c;生成的视频在细节信息上与输入的图片有较大的出入。这篇博客结合最新的…

怎么在电脑上记录每日事项,并在桌面上显示便签记事本?

作为一名教师兼班主任&#xff0c;我每天的工作繁忙且多样。从早晨的课程准备&#xff0c;到课间的学生辅导&#xff0c;再到课后的作业批改和家长沟通&#xff0c;每一项工作都需要我细心且有条理地完成。在这样的工作节奏下&#xff0c;如何高效管理每日事项&#xff0c;确保…

python for循环打印字符串、指定区间范围数字以及打印区间数字内的奇数和偶数

1.一串字符&#xff0c;循环打印&#xff1a; 源码&#xff1a; strings"Python" n0 print("字符长度为&#xff1a;"str(len(strings))) for a in strings: nn1 print ("第"str(n)"位是&#xff1a;"a)打印结果&#xff1a…

C# delegate的使用

C# 中的delegate&#xff08;委托&#xff09;是一种类型安全的函数指针&#xff0c;它安全地封装了方法的签名和引用。 可以将delegate视为一种可引用的方法类型&#xff0c;类似于C或C中的函数指针&#xff0c;但比函数指针更安全、更类型安全。 delegate主要用于事件处理、…

幸福感掉线了?那就去借点“光”吧

做什么事都提不起兴趣&#xff0c;总觉得自己不是很开心但是又难以描述哪里不对劲&#xff0c;遇到想不通的事情总会控制不住地持续内耗自己&#xff1f;当生活不断给你下达负能量挑战时&#xff0c;你是否准备好反击了呢&#xff1f; 这里有一个“借光”故事或许可能帮得上你…

【PyTorch】成功解决TypeError: iteration over a 0-d tensor

【PyTorch】成功解决TypeError: iteration over a 0-d tensor &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…