LeetCode 第27天

39. 组合总和

组合中无重复元素,所有元素可以随便取多少次。那么startIndex就可以从本次遍历处开始。

class Solution {
public:
// 老套路,两个数组前一个存储中间结果,后一个存储总结果集vector<int> vec;vector<vector<int>> res;// 回溯void backtracking(vector<int>& candidates, int target, int startIndex){if (target == 0){res.push_back(vec);return;}// 如果小于0则表示不满足,不需要加入结果集else if (target < 0){return;}// 对于n叉树的遍历for (int i = startIndex;i<candidates.size();i++){target -= candidates[i];vec.push_back(candidates[i]);// 还是需要传递startIndex,但是下一级递归可以使用这一级的数,因为可重复backtracking(candidates, target, i);target += candidates[i];vec.pop_back();}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {backtracking(candidates, target, 0);return res;}
};

39. 组合总和

这一次变为组合中有重复元素,但是每一个元素只能使用一次。那么就需要先对组合元素排序,如果相邻元素相同只需要遍历一次,否则可能造成结果集重合。

class Solution {
public:vector<int> path;vector<vector<int>> res;void backtracking(vector<int>& candidates, int target, int startIndex){if (target == 0){res.push_back(path);return;}if (target < 0){return;}for (int i = startIndex; i<candidates.size();i++){// 这里同层的相同元素直接跳过,否则会出现重复if (i > startIndex && candidates[i] == candidates[i-1])continue;target -= candidates[i];path.push_back(candidates[i]);backtracking(candidates, target, i+1);target += candidates[i];path.pop_back();}}vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {// 这个方法需要先排序sort(candidates.begin(), candidates.end());backtracking(candidates, target,0);return res;}
};

131. 分割回文串

没想到分割回文串也是组合问题的延续。难点在于分割点的选取,子串获取,回文串判断要单独写出。总之是一道经典难题吧。还需要再练习。

class Solution {
private:
// 不会写,抄的vector<string> path;vector<vector<string>> res;void backtracking(const string& s, int startIndex){// 结束条件 startIndex表示切割的起始位置if (startIndex >= s.size()){res.push_back(path);return;}// 横向切割for (int i = startIndex; i < s.size(); i++){if (isPalindrome(s, startIndex, i)){// substr函数的参数为begin,len,表示[begin, begin+len)的子串string str = s.substr(startIndex, i - startIndex + 1);path.push_back(str);}else{continue;}// 切割点向后移动backtracking(s, 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) {backtracking(s, 0);return res;}
};

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

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

相关文章

C++进阶--搜索二叉树

概念 搜索二叉树是一种特殊的二叉树&#xff0c;其具有以下特点&#xff1a; 1.对于每个结点&#xff0c;它的左子树中的所有节点的值都小于该节点的值&#xff0c;而右子树中的所有节点的值都大于该节点的值。 2.左子树和右子树都是搜索二叉树。 这个 特性使得搜索二叉树可…

详解MYSQL中的平均值组大小

文章目录 平均值组大小了解平均值组大小MySQL什么时候会使用平均值组大小平均值组大小对于索引选取的影响平均值组大小 了解平均值组大小 总数据量 / 值组 = 平均值组大小 值组是一组具有相同键前缀值的行,及所有相等的键为一个值组。总数据量为全表数据量MySQL什么时候会使…

2024初始Spring(并使用idea创建springweb项目)

前言 spring呢&#xff0c;以前一直是简单的了解&#xff0c;并没有利用空闲时间去进行对应的深入的学习&#xff0c;今天呢原本是打算好好学的&#xff0c;然后后来呢感觉还是太早了接触&#xff0c;打算把前面知识在过一编之后再开始 Spring介绍 Spring | Home 大家想要访…

SQL必知必会笔记(13~16章)

第十三章 创建高级联结 1、别名&#xff1a;缩短SQL语句&#xff0c;允许在一条Select语句中多次使用相同的表 SELECT A.Name, A.Maths, A.English FROM transcript AS A INNER JOIN student_id As B ON A.Name B.Name; 2、Oracle数据库中没有AS关键字&#xff0c;直接在表名或…

英码科技携手昇腾共建算力底座:推出EA500I超强AI处理能力边缘计算盒子!

在数字经济浪潮中&#xff0c;算力已成为不可或缺的驱动力&#xff0c;为各行各业的数字化转型提供了强大的推动力。面对多元化和供需不平衡的挑战&#xff0c;需要实现从理论架构到软硬件实现的质的飞跃&#xff0c;以满足持续增长的算力需求&#xff0c;华为昇腾在这一方面展…

Css Flex弹性布局中的换行与溢出处理

Css Flex弹性布局中的换行与溢出处理 CSS弹性布局&#xff08;Flex&#xff09;是CSS3中的一种新的布局方式&#xff0c;它能够帮助我们更加灵活地布局元素。在Flex弹性布局中&#xff0c;元素的布局仅依赖于父容器的设置&#xff0c;而不再需要复杂的相对或绝对定位。本文将详…

VS Code+Live Server插件开发游戏并结合内网穿透分享好友异地访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程&#xff0c;我们将通过VS Code实现远程开发MENJA小游戏&#xff0c;并通过cpolar内网穿透发布到公网&#xff0c;分…

人脸识别基本流程

人脸识别一般包括&#xff1a;人脸检测、人脸对齐、人脸特征提取和人脸比对四个步骤 人脸检测&#xff1a;检测到人脸的位置人脸对齐&#xff1a;同一个人采集到的不同图像可能呈现出不同的姿态和表情等&#xff0c;这种情况是不利于人脸特征提取的。所以有必要将人脸图像都变…

安装mongodb数据库,并且新建自己的库

1、拉取mongodb dokcer pull mongo:4.4.132、运行docker安装mongodb docker run -itd --name mongo -v /home/dockerdata/mongo/data:/data/db -p 27017:27017 mongo:4.4.13 --auth3、进入mongdb docker exec -it mongo mongo admin4、创建自己的库 use interfaceLog5、新…

ubuntu系统下c++ cmakelist vscode debug(带传参的debug)的详细示例

c和cmake的debug&#xff0c;网上很多都需要配置launch.json&#xff0c;cpp.json啥的&#xff0c;记不住也太复杂了&#xff0c;我这里使用cmake插件带有的设置&#xff0c;各位可以看一看啊✌(不知不觉&#xff0c;竟然了解了vscode中配置文件的生效逻辑&#x1f923;) 克隆…

【PPT密码】ppt设置的编辑密码,如何取消?

不知道大家是否了解PPT文件的编辑密码&#xff0c;首先ppt中没有限制编辑功能&#xff0c;设置为只读模式后仍然可以编辑文件&#xff0c;但其实有一种类似于限制编辑的加密方式。在我们打开PPT文件的时候会有密码输入框。 如果我们没有输入密码&#xff0c;以只读方式进入&…

Linux项目自动化构建工具之make/Makefile演示gcc编译

文章目录 一、背景二、如何使用&#xff1f;三、原理四、关于make的问题五、再次理解/编写makefile依赖关系依赖方法 六、原理讲解项目清理makefile是支持变量的取消执行make后显示命令依赖方法可以多行 一、背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备…

ResizeObserver的使用

这篇说下ResizeObserver API。ResizeObserver接口监视 Element 内容盒或边框盒或者 SVGElement 边界尺寸的变化。 ResizeObserver避免了通过回调函数调整大小时&#xff0c;通常创建的无限回调循环和循环依赖项。它只能通过在后续的帧中处理 DOM 中更深层次的元素来做到这一点…

Yarn常见问题处理

任务出现container OOM异常导致作业失败 原因 Container内存不足或者作业数据倾斜 解决方案 检查Container相关参数,判断是否设置过小(低于4GB)。如果Container小于4GB,优先考虑调大当前作业container大小,如果是Tez任务,还需要同步调整以下参数 # tez container size…

双非本科准备秋招(17.1)—— 力扣二叉树

1、257. 二叉树的所有路径 要求返回根节点到叶子节点的所有路径&#xff0c;这里用前序遍历就好。 每次递归前&#xff0c;都让字符串s加上当前节点的值和“->”&#xff0c;然后判断是否为叶子节点&#xff0c;如果是的话&#xff0c;说明这条路径是一个答案&#xff0c;因…

为啥餐饮界营销频频出圈?媒介盒子分享

回看2023年的营销热点&#xff0c;茶饮界和餐饮行业依然占据了最多的出圈镜头&#xff0c;从麦当劳的“麦门”到海底捞的科目三&#xff0c;许多餐饮和食品品牌都依靠营销策划和巧思成功占据了用户心智。毫无疑问&#xff0c;内容已经成为公认的和用户沟通的最佳手段。今天媒介…

Django的配置文件setting.py

BASE_DIR 项目路径&#xff1a;默认是已经打开的主项目路径 ​​​​​​​BASE_DIR os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY 密钥 SECRET_KEY (dh&_fm2hfn9y)35!_6#$a7q%%^onoy#-a8x18r4(6*8f(aniDEBUG 帮助调试&#xff0c;默认…

【EI会议征稿通知】第三届智能控制与应用技术国际学术会议(AICAT 2024)

第三届智能控制与应用技术国际学术会议&#xff08;AICAT 2024&#xff09; 2024 3rd International Symposium on Artificial Intelligence Control and Application Technology 2024年第三届智能控制与应用技术国际学术会议&#xff08;AICAT 2024&#xff09;定于2024年5月…

Postgresql数据库存储过程中的事务处理

在PostgreSQL中&#xff0c;事务处理是一种保证数据库操作要么完全成功&#xff0c;要么完全失败的机制&#xff0c;确保数据库的完整性和一致性。事务通过一系列的数据库操作组成&#xff0c;这些操作作为一个整体执行&#xff0c;它们要么全部成功&#xff0c;要么全部失败。…

Android14之Selinux报错:unknown type qemu_device at token (一百八十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…