代码随想录算法训练营第28天|93.复原IP地址 |78.子集 |90.子集II

代码随想录算法训练营第28天|93.复原IP地址 |78.子集 |90.子集II

93.复原IP地址

本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了

题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html
视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/

class Solution {
public:vector<string> result;// 记录结果void backtracking(string& s,int startindex,int pointnum)// startIndex: 搜索的起始位置,pointNum:添加逗点的数量{if(pointnum==3)// 逗点数量为3时,分隔结束{   // 判断第四段子字符串是否合法,如果合法就放进result中if(isvalue(s,startindex,s.size()-1))result.push_back(s);return;}for(int i=startindex;i<s.size();i++){if(isvalue(s,startindex,i))// 判断 [startIndex,i] 这个区间的子串是否合法{s.insert(s.begin()+i+1,'.');// 在i的后面插入一个逗点pointnum++;backtracking(s,i+2,pointnum);// 插入逗点之后下一个子串的起始位置为i+2s.erase(s.begin()+i+1);// 回溯删掉逗点pointnum--;// 回溯}else break;//不合法,直接结束本层循环}}// 判断字符串s在左闭又闭区间[start, end]所组成的数字是否合法
bool isvalue(string& s,int start,int end)
{if(start>end)return false;if(s[start]=='0'&&start!=end)return false;// 0开头的数字不合法int num=0;for(int i=start;i<=end;i++){if(s[i]>'9'||s[i]<'0')// 遇到非数字字符不合法return false;num=num*10+s[i]-'0';if(num>255)// 如果大于255了不合法return false;}return true;
}vector<string> restoreIpAddresses(string s) {result.clear();if(s.size()<4||s.size()>12)return result;//剪枝backtracking(s,0,0);return result;}
};

78.子集

子集问题,就是收集树形结构中,每一个节点的结果。 整体代码其实和 回溯模板都是差不多的。

题目链接/文章讲解:https://programmercarl.com/0078.%E5%AD%90%E9%9B%86.html
视频讲解:https://www.bilibili.com/video/BV1U84y1q7Ci

class Solution {
public:vector<int>path;vector<vector<int>>result;void backtracking(vector<int>& nums,int startindex){result.push_back(path);// 收集子集,要放在终止添加的上面,否则会漏掉自己if(startindex>=nums.size()) return; // 终止条件可以不加for(int i=startindex;i<nums.size();i++){path.push_back(nums[i]);backtracking(nums,i+1);path.pop_back();}}vector<vector<int>> subsets(vector<int>& nums) {result.clear();path.clear();backtracking(nums,0);return result;}
};

90.子集II

大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合,建议自己独立做一做,本题涉及的知识,之前都讲过,没有新内容。

题目链接/文章讲解:https://programmercarl.com/0090.%E5%AD%90%E9%9B%86II.html
视频讲解:https://www.bilibili.com/video/BV1vm4y1F71J

class Solution {
public:vector<int> path;vector<vector<int>> result;void backtracking(vector<int>& nums,int starindex,vector<bool>& used){result.push_back(path);//每个结点即子集所以可以不用中止条件for(int i=starindex;i<nums.size();i++){// used[i - 1] == true,说明同一树枝candidates[i - 1]使用过// used[i - 1] == false,说明同一树层candidates[i - 1]使用过// 而我们要对同一树层使用过的元素进行跳过if(i>0&&nums[i]==nums[i-1]&&used[i-1]==false)continue;path.push_back(nums[i]);used[i]=true;backtracking(nums,i+1,used);path.pop_back();used[i]=false;}}vector<vector<int>> subsetsWithDup(vector<int>& nums) {result.clear();path.clear();vector<bool>used(nums.size(),false);sort(nums.begin(),nums.end());// 去重需要排序(***)backtracking(nums,0,used);return result;}
};```

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

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

相关文章

React——开发者工具

浏览器插件&#xff1a;谷歌浏览器插件react-devtools 方式1&#xff1a;chrome应用商店添加 方式2&#xff1a;下载安装包放在浏览器上

打靶记录(个人学习笔记)

一、信息收集 1、主机发现 通过nmap对此网段进行扫描&#xff0c;可以确定靶机ip为192.168.189.144 2、端口扫描 确定了靶机ip之后&#xff0c;我们来扫描端口 发现80端口开放&#xff0c;先访问80端口 用插件识别出一些信息 Wappalyzer插件获得信息&#xff1a;Web服务&am…

ThingsBoard Edge 设备控制

文章目录 一、RPC 功能1.服务端 RPC2.客户端 RPC3.MQTT RPC API3.1.服务端RPC3.2.客户端RPC 二、设备控制1.环境准备2.创建设备3.服务端PRC3.1.RPC消息主题3.2.程序源码3.3.创建仪表板3.4.边缘分配仪表板3.5.测试 4.客户端RPC4.1.RPC消息主题4.2.程序源码4.3.规则链4.4.测试 Th…

【Git】error: bad signature 0xb86f1e1 和 bfatal: index file corrupt

一、问题 之前都好好的&#xff0c;今天执行 git add .的时候突然报错 报错原因翻译成中文&#xff1a;索引文件损坏 二、解决方法 方法1&#xff1a; 删除.git隐藏文件夹中的index文件 然后执行 git reset 重新生成index文件 git reset 方法2&#xff1a; 重新从远程克隆…

xinference - 大模型分布式推理框架

文章目录 关于 xinference使用1、启动 xinference设置其他参数 2、加载模型3、模型交互 其它报错处理 - transformer.wte.weight 关于 xinference Xorbits Inference&#xff08;Xinference&#xff09;是一个性能强大且功能全面的分布式推理框架。 可用于大语言模型&#xff…

TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

本文整理至https://zhuanlan.zhihu.com/p/606575441这里是清华大学软件学院机器学习组官方公众号(THUML-LAB)&#xff0c;欢迎关注我们&#xff0c;获取最新资讯&#xff01; 本文介绍本组ICLR2023时间序列分析方向的最新工作&#xff1a;TimesNet: Temporal 2D-Variation Mode…

Linux/Ubuntu/Debian从控制台启动程序隐藏终端窗口

如果你想从终端运行应用程序但隐藏终端窗口. 你可以这样做&#xff1a; 在后台运行&#xff1a; 你只需在命令末尾添加一个与号 (&) 即可在后台运行它。 例如&#xff1a; your_command &将 your_command 替换为你要运行的命令。 这将在后台启动该命令&#xff0c…

NSGA-III算法:如何在多目标优化问题中找到最合适的解

当我们面临多个目标函数时&#xff0c;单目标的遗传算法可能无法满足需求。这时&#xff0c;我们可以引入多目标遗传算法。在这种情况下&#xff0c;目标函数可能存在冲突&#xff0c;例如&#xff0c;一个目标函数需要最小化&#xff0c;而另一个目标函数需要最大化。某个目标…

联发科MT8797迅鲲1300T规格参数_MTK5G安卓核心板方案定制

联发科MT8797&#xff08;迅鲲1300T&#xff09;平台采用Arm Cortex-A78和Cortex-A55组成的八核架构CPU&#xff0c;以及Arm Mali-G77MC9九核GPU&#xff0c;集成了AI处理器MediaTek APU&#xff0c;支持5G Sub-6GHz全频段和5G双载波聚合,支持1.08亿像素拍照和多镜头组合,以及1…

3.5 RK3399项目开发实录-板载RTLinux系统的使用(wulianjishu666)

STM32F103单片机从零到项目开发程序实例 链接&#xff1a;https://pan.baidu.com/s/1dWNskNinrMk4bxaE-jgHhQ?pwdymn3 1. 介绍 为了满足用户对系统实时性的需求&#xff0c;官方在 SDK 源码的内核基础上支持升级 Linux 到 RTLinux。 我们RTlinux支持有preempt和xenomai两个版…

032—pandas 时间窗口中最多的风向和频数

前言 时间窗口指的是在一段时间内对数据进行分析的时间段&#xff0c;通常是一个连续的时间段&#xff0c;如一小时、一天、一周或一个月等。在分析时间序列数据时&#xff0c;时间窗口的选择通常会影响分析结果和预测精度。 需求&#xff1a; 风向是指风的方向&#xff0c;…

如何与Polytec建立EDI连接?

Polytec Holding AG是一家总部位于奥地利的汽车供应商和塑料加工公司。该公司的业务分为四个部门&#xff1a;塑料&#xff0c;为乘用车和非汽车行业的发动机和内饰提供塑料部件&#xff1b;复合材料&#xff0c;为商用车和乘用车提供外饰和发动机零部件&#xff1b;汽车造型&a…

106 基于消息队列来做 mysql 大数据表数据的遍历处理

前言 最近有这样的一个需求, 我们存在一张 很大的 mysql 数据表, 数据量大概是在 六百万左右 然后 需要获取所有的记录, 将数据传输到 es 中 然后 当时 我就写了一个脚本来读取 这张大表, 然后 分页获取数据, 然后 按页进行数据处理 转换到 es 但是存在的问题是, 前面 还…

前后端项目笔记

前端项目创建 准备工作 nodejs安装 vue cli安装 vue create frontend 最后一个y的话 它会保存 方便下次创建项目 我这是手快敲错了 随自己 前端项目组件及作用 Element-UI引入 安装 npm i element-ui -S main.js中引入 清空路口App.vue 清空Home页面 随便写个按钮 原因…

HCIE考证心得 | 在云校的学习收获颇多

我是来自深圳信息职业技术学院22级现代移动通信3-3班的冯同学&#xff0c;我在2023年12月12日通过了华为认证Cloud Service HCIE。在此&#xff0c;我将分享考证中的心得体会给大家。 备考的六点建议 一是要细心严谨&#xff0c;做实验时要全神贯注&#xff0c;明确实验要求…

面试算法-45-分发糖果

题目 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回需要…

react hook: useRef

在组件顶层调用 useRef 以声明一个 ref const ref useRef(initialValue) console.log(ref.current) initialValue&#xff1a;ref 对象的 current 属性的初始值。可以是任意类型的值。这个参数在首次渲染后被忽略。 current 返回一个只有一个属性的对象, 初始值为传递的 initi…

RocketMQ发送和接收方式详解

RocketMQ有几种发送方式 RocketMQ 提供了几种不同的消息发送方式&#xff0c;以满足不同场景下的需求。这些发送方式主要包括&#xff1a;同步发送&#xff08;Synchronous&#xff09;&#xff1a;这是最常见的一种发送方式&#xff0c;客户端发送消息后&#xff0c;会等待服…

Python-GEE绘制DEM精美图片

目录 上传矢量和DEM获取添加颜色条参考文章 先连接上GEE的自己的项目 import ee import geemap geemap.set_proxy(port33210) ee.Authenticate() ee.Initialize(projecta-flyllf0313)上传矢量和DEM获取 使用Google Earth Engine&#xff08;GEE&#xff09;和Google Earth Eng…