当前位置: 首页 > news >正文

代码随想录|day26|回溯算法part03● 39. 组合总和● 40.组合总和II● 131.分割回文串

 今天的练习基本就是回溯法组合问题,这一节只要看labuladong即可。

 组合问题:

39. 组合总和---------------------形式三,元素无重可复选

链接:代码随想录

 一次对,同样在进入下次循环时,注意startindex是从j开始,还是j+1开始

画图:

 代码:

class Solution {
public:
// 同一个数字可以无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 
vector<vector<int>>v;
vector<int>mv;vector<vector<int>> combinationSum(vector<int>& candidates, int target) {backtracing(candidates,target,0);return v;}void backtracing(vector<int> &candidates,int target,int startIndex){if(target<0){return;}else if(target==0){v.push_back(mv);}else{for(int j=startIndex;j<candidates.size();j++){mv.push_back(candidates[j]);backtracing(candidates,target-candidates[j],j);mv.pop_back();}}}
};

代码随想录版,基本一样

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;}
};

40.组合总和II --------------形式二,元素可重,不可复选

链接:代码随想录

 

 代码,第一遍做错

class Solution {
public:vector<vector<int>>v;vector<int>mv;vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {backtracing(candidates,target,0);return v;}void backtracing(vector<int>&candidates,int target,int startIndex){if(target<0){return;}else if(target==0){v.push_back(mv);}else{for(int j=startIndex;j<candidates.size();j++){mv.push_back(candidates[j]);backtracing(candidates,target-candidates[j],j+1);mv.pop_back();}}}
};

报错:

 125 215重复

看labuladong这一节,讲的非常非常清晰

 

 

 

 一开始写的j大于0,不对

class Solution {
public:
//当给出的数组中存在重复的元素时,要通过给定数组的排序对组合/排列问题 排序进行去重
vector<vector<int>>v;
vector<int>mv;vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {sort(candidates.begin(),candidates.end());backtracing(candidates,target,0);return v;}void backtracing(vector<int> & candidates,int target,int startIndex){if(target<0){return;}else if(target==0){v.push_back(mv);}else{for(int j=startIndex;j<candidates.size();j++){// 要对同一树层使用过的元素进行跳过if(j>startIndex && candidates[j]==candidates[j-1])//zhijisuandiyige{continue;}mv.push_back(candidates[j]);backtracing(candidates,target-candidates[j],j+1);mv.pop_back();}}}
};

131.分割回文串 

链接:代码随想录

 我的思路是没有,直接看了代码随想录。

 也就是隔板法,比如string.size===16,则有15个空位,第一块隔板在15个空位上随便选一个,然后再放第二块隔板(第二块隔板在第一块隔板后),再放第三块隔板(第三块隔板在第二块隔板后)。

树的每一层,是检验放一块隔板、两块隔板。。。直到放到第15块隔板的情况。

逻辑比较复杂。因为下一层是上一层隔板的位置,总之看代码随想录,我自己的逻辑还是稍微模糊。

class Solution {
public:// 想起最长回文串那道题,不懂这里为什么要用回溯。//先写一个回文串的函数.//按照例子一,可以重复//貌似是数学里的隔板问题。则对于长度为16的string,最多可以放15个隔板。最少可以放1个隔板,且是在15个空位中任意放1个、两个。。。15个隔板vector<vector<string>>v;vector<string>mv;vector<vector<string>> partition(string s) {backtracing(s,0);return v;  }void backtracing(string &s,int startIndex){if(startIndex==s.size()){v.push_back(mv);return;}else{for(int j=startIndex;j<s.size();j++){if(is_huiwen(s,startIndex,j)){mv.push_back(s.substr(startIndex,j-startIndex+1));backtracing(s,j+1);//这里写错了,应该是从下一个位置开始找mv.pop_back();}}}}bool is_huiwen(string &s,int l,int r){while(l<=r && s[l]==s[r]){l++;r--;}if(l>r){return true;}return false;}
};

相关文章:

代码随想录|day26|回溯算法part03● 39. 组合总和● 40.组合总和II● 131.分割回文串

今天的练习基本就是回溯法组合问题&#xff0c;这一节只要看labuladong即可。 组合问题&#xff1a; 39. 组合总和---------------------形式三&#xff0c;元素无重可复选 链接&#xff1a;代码随想录 一次对&#xff0c;同样在进入下次循环时&#xff0c;注意startindex是从j…...

linux-文件切割-splitcsplit

目录 按大小切割-split 按行数切割-split 按内容切割-csplit 按大小切割-split split -b 10k example.conf -d -a 3 output.file example.conf 被切割的文件 -b 指定切割大小 -d 数字后缀 -a 后缀长度&#xff0c;默认2 output.file …...

USB键盘实现——设备限定描述符(五)

文章目录设备限定描述符仓库地址设备限定描述符介绍设备限定描述符结构体定义获取设备限定描述符的请求标准设备请求USB 控制端点收到的数据设备限定描述符返回附 STM32 枚举日志设备限定描述符 设备限定描述符内容解析和 HID鼠标 一致。 仓库地址 仓库地址 设备限定描述符…...

【C++】map和set(一文拿捏,包教包会)

目录 1.关联式容器和序列式容器 2.键值对 3.树型结构的关联式容器 4.set 5.multiset 6.map 7.multimap 1.关联式容器和序列式容器 set&#xff1a;关联式容器——数据之间关联紧密 线性表&#xff08;vector&#xff0c;list&#xff0c;deque&#xff09;&#xff1a;序…...

爬虫Day2 正则表达式

爬虫Day2 正则表达式 一、正则表达式 1. 正则的作用 正则表达式是一种可以让复杂的字符串变得简单的工具。 写正则表达式就是用正则符号来描述字符串规则 # 案例1&#xff1a;判断一个字符串是否是一个合法的手机号码 tel 23297293329# 方法1&#xff1a;不用正则 if len…...

LeetCode-0324~28

leetCode1032 思路&#xff1a;想的是维护一个后缀数组&#xff0c;然后用Set去判断一下&#xff0c;结果超时了&#xff0c;去看题解&#xff0c;好家伙AC自动机&#xff0c;没办法&#xff0c;开始学。 正确题解&#xff1a; class ACNode{public ACNode[] children;publi…...

Vue2自己封装的基础组件库或基于Element-ui再次封装的基础组件库,如何发布到npm并使用(支持全局或按需引入使用),超详细

最终效果如下 一、先创建vue2项目 1、 可以用vue-cli自己来创建&#xff1b;也可以直接使用我开源常规的vue2后台管理系统模板 以下我以 wocwin-admin-vue2 项目为例 修改目录结构&#xff0c;最终如下 2、修改vue.config.js文件 module.exports { // 修改 src 目录 为 exam…...

【开发】中间件——MongoDB

MongoDB是一个基于分布式&#xff08;海量数据存储&#xff09;文件存储的数据库。 MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的&#xff0c;它支持的数据结构非常松散&#xff0c;是类似json…...

C++进阶 — 【C++11】

目录 一、 C11简介 二、 统一的列表初始化 1.&#xff5b;&#xff5d;初始化 2. initializer_list 三、声明 1. auto 2. decltype 3. nullptr 四、范围for循环 五、STL中一些变化 1. 提供了一些新容器 2.容器中增加了一些新方法 六、右值引用和移动语义 1. 左值引用和右…...

Mac安装Homebrew

1.前往Homebrew官网&#xff0c;复制官网的安装命令 https://brew.sh/ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装结束后&#xff0c;记得仔细看脚本执行最后的提示&#xff0c;需要我们复制两行命令执…...

【详细】利用VS2019创建Web项目,并发送到IIS,以及IIS与ASP.NET配置

一、打开VS2019选择创建新项目【最好以管理员身份运行VS2019&#xff0c;后面发布网站时需要以管理员身份&#xff0c;避免后面还要重启&#xff0c;可以一开始就以管理员身份运行】 二、选择语言为C#&#xff0c;然后选择“ASP.NET Web应用程序&#xff08;.NET Framework&…...

FasterRcnn,Yolov2,Yolov3中的Label Assignment机制 和 ATSS

一般把anchor到gt之间如何匹配的方法称为label assignment&#xff0c;也就是给预设的anchor打上正负样本等标签&#xff0c;方便我们后续进一步回归。 其实RPN和Yolo有各自的label assignment方法&#xff0c; 在Faster rcnn&#xff0c;yolo&#xff0c;RetinaNet中&#xf…...

使用Java技术WebSocket创建聊天、群聊,实现好友列表,添加好友,好友分组,聊天记录查询功能。

文章目录 引入依赖主要代码配置WebSocket创建通讯完整后台项目代码下载WebSocket的由来: 之前只有一个http协议,http协议是请求响应,存在缺陷,就是请求只能由客户端发起,然后请求到服务器,服务器做响应,但是如果服务器状态做了改变,客户端并不能即使的更新,之前的是按照…...

【Redis07】Redis基础:Bitmap 与 HyperLogLog 相关操作

Redis基础学习&#xff1a;Bitmap 与 HyperLogLog 相关操作继续进行 Redis 基础部分的学习&#xff0c;今天我们学习的是两种另外的数据类型。说是数据类型&#xff0c;但其实它们实际上使用的都是 String 类型做为底层基础&#xff0c;只不过是在存储的时候进行了一些特殊的操…...

华为路由器 VRRP主备配置

组网需求 如下图所示&#xff0c;PC1通过SW1双归属到R1和R2。为保证用户的各种业务在网络传输中不中断&#xff0c;需在R1和R2上配置VRRP主备备份功能。 正常情况下&#xff0c;主机以R1为默认网关接入Internet&#xff0c;当R1故障时&#xff0c;R2接替R1作为网关继续进行工作…...

docker容器安装ES

1.拉取镜像 docker pull elasticsearch:6.5.42.修改别名 docker tag [容器ID] es65:6.5.42.启动应用 docker run -it -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS"-Xms128m -Xmx128m" es65:6.5.43.拷贝配置文件到宿主机 docker cp es:/usr/share/ela…...

Python Module — prompt_toolkit CLI 库

目录 文章目录目录prompt_toolkit示例化历史记录热键自动补全多行输入Python 代码高亮自定义样式prompt_toolkit prompt_toolkit 是一个用于构建 CLI 应用程序的 Python 库&#xff0c;可以让我们轻松地构建强大的交互式命令行应用程序。 自动补全&#xff1a;当用户输入命令…...

springboot mybatis-plus 调用 sqlserver 的 存储过程 返回值问题

问题&#xff1a; 在使用 mybatis-plus 调用sqlserver 存储过程 没有返回值 经过资料查找 注意点 此处使用Map传参&#xff0c;原因在于存储过程的返回值&#xff0c;通常在参数定义中实现&#xff0c;如In 入参、out 出参。 这样当执行后有结果返回时&#xff0c;则可以将结…...

【0180】PG内核读取pg_hba.conf并创建HbaLine记录(1)

文章目录 1. pg_hba.conf文件是什么?2. postmaster何时读取pg_hba.conf?2.1 pg内核使用pg_hba.conf完成客户端认证的原理2.2 读取pg_hba.conf的几个模块3. pg内核读取pg_hba.conf过程3.1 VFD机制获取文件描述符3.2 根据fd读取文件内容相关阅读: 【0178】DBeaver、pgAdmin I…...

【原型设计工具】​​上海道宁为您提供Justinmind,助力您在几分钟内形成原型,并现场测试,无需编写任何代码

Justinmind是用于 Web和应用程序的原型制作工具 在几分钟内形成原型 并在现场进行测试 无需编写任何代码 单击一下即可轻松在线获取您的设计 并与整个团队共享 享受高效的沟通和快速反馈 以实现持续改进和利益相关者的支持 开发商介绍 JustinMind是由西班牙JustinMind公…...

Deepin系统远程桌面实战:从零配置xrdp服务到Windows无缝连接

Deepin系统远程桌面实战&#xff1a;从零配置xrdp服务到Windows无缝连接 在跨平台协作成为常态的今天&#xff0c;远程桌面技术让不同操作系统间的无缝协作成为可能。对于使用Deepin系统的用户而言&#xff0c;如何高效地通过Windows设备远程访问和控制Deepin桌面&#xff0c;是…...

【Matlab】MATLAB教程:图形句柄;案例:h=plot(x,y);应用:控制图形属性

MATLAB教程:图形句柄;案例:h=plot(x,y);应用:控制图形属性 在MATLAB数据可视化、实验报告绘图、工程结果展示等场景中,仅仅通过plot函数绘制基础图形远远不够。实际科研与工程应用中,往往需要精准调整图形的线条样式、颜色、标记点、坐标轴、图例等属性,让图形更清晰、…...

毕业设计实战:基于SSM+MySQL的税务门户网站设计与实现指南

毕业设计实战&#xff1a;基于SSMMySQL的税务门户网站设计与实现指南 在开发“基于SSMMySQL的税务门户网站”毕业设计时&#xff0c;曾因政策文件收藏表未通过用户ID与政策文件ID双外键关联踩过关键坑——初期仅设计收藏编号、收藏时间等基础字段&#xff0c;未与用户表、政策文…...

实战向 Python 汽车推荐系统 Django框架 可视化 协同过滤算法 数据分析 大数据 机器学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

C++程序崩溃别慌!手把手教你用backward-cpp+glog捕获并记录堆栈信息(附完整CMake配置)

C程序崩溃别慌&#xff01;手把手教你用backward-cppglog捕获并记录堆栈信息&#xff08;附完整CMake配置&#xff09; 深夜两点&#xff0c;服务器告警突然响起。你揉着惺忪的睡眼查看日志&#xff0c;只看到一行冰冷的"Segmentation fault"——没有调用栈&#xf…...

Qwerty Learner设计系统构建:组件库与样式指南终极指南

Qwerty Learner设计系统构建&#xff1a;组件库与样式指南终极指南 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gi…...

springboot+vue基于web的高校网上订餐平台设计系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块分析技术实现要点特色功能扩展项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块分析 后台管理模块 管理员登录与权…...

避开Verilog数据转换的坑:ASCII码转16进制时,大小写处理你真的做对了吗?

Verilog字符转换实战&#xff1a;如何正确处理ASCII与十六进制的大小写问题 在数字系统设计中&#xff0c;数据格式转换是最基础却又最容易出错的环节之一。最近在review团队一位新成员的UART通信模块代码时&#xff0c;发现一个典型的"大小写陷阱"——当十六进制数据…...

ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解

ofa_image-caption_coco_distilled_en快速部署教程&#xff1a;7860端口WebUI调用全流程详解 本文介绍如何快速部署和使用ofa_image-caption_coco_distilled_en模型&#xff0c;这是一个专门用于为图片生成英文描述的AI系统。通过简单的Web界面&#xff0c;任何人都能轻松上传图…...

如何用ScanNetv2复现Stratified和SWIN3D论文实验?完整数据集配置指南

如何用ScanNetv2复现Stratified和SWIN3D论文实验&#xff1f;完整数据集配置指南 在3D点云分割领域&#xff0c;ScanNetv2数据集已成为评估算法性能的黄金标准。对于想要复现Stratified Transformer或SWIN3D这类前沿论文的研究者来说&#xff0c;数据集的正确配置往往是第一个…...