代码训练营Day.28 | 93. 复原IP地址、78. 子集、90. 子集II

93. 复原IP地址

1. LeetCode链接

. - 力扣(LeetCode)

2. 题目描述

3. 解法

字符串切四刀,最后一刀必须是在末位。

麻烦的地方在于文本的各种限制条件、剪枝等等。

class Solution {
public:vector<string> results;string result;void backtracking(string& s, int start, int k) {if (start == s.size() && k == -1) {result.pop_back();results.push_back(result);result.push_back('.');return;}string ss;for (int i = start; i < s.size(); i++) {if (k == 0) { // 要是前三刀切完了,第四刀必须在末尾ss = s.substr(start, s.size() - start);i = s.size() - 1;}else ss = s.substr(start, i + 1 - start);if (ss[0] == '0' && ss.size() > 1) break; // 开头‘0’不合法,后面的也不用考虑if (ss.size() > 3) break; // size大于3,肯定>255,后面也不用考虑int num = stoi(ss);if (num > 255) break; // >255,后面也不用考虑了。result += ss;result.push_back('.');backtracking(s, i + 1, k - 1);result.erase(result.end() - ss.size() - 1, result.end());}return;}vector<string> restoreIpAddresses(string s) {backtracking(s, 0, 3);return results;}
};

该方法不太省空间。以下方法直接在s上操作,考虑将三个‘.’插在字符串的哪里。注意第三个点插在最后一位的情况。

class Solution {
public:vector<string> result;void backtracking(string& s, int pp, int start) {if (pp == 3) {if (isValid(s, start, s.size() - 1)) result.push_back(s);return;}for (int i = start; i < s.size(); i++) {if (isValid(s, start, i)) {s.insert(s.begin() + i + 1, '.');pp++;backtracking(s, pp, i + 2);pp--;s.erase(s.begin() + i + 1);} else break;}}bool isValid(string& s, int left, int right) {if (left > right) return false;  // 防止最后一位是‘.’if (s[left] == '0' && right > left) return false;if ((right - left) > 3) return false;int num = 0;for (int i = left; i <= right; i++) {if (s[i] > '9' || s[i] < '0') return false;num = num * 10 + (s[i] - '0');if (num > 255) return false;}return true;}vector<string> restoreIpAddresses(string s) {backtracking(s, 0, 0);return result;}
};

78. 子集

1. LeetCode链接

. - 力扣(LeetCode)

2. 题目描述

3. 解法

太简单了,就是组合但是不考虑长度,任何都能压入最终答案中。

class Solution {
public:vector<vector<int>> results;vector<int> result;void backtracking(vector<int>& nums, int start) {results.push_back(result);for (int i = start; i < nums.size(); i++) {result.push_back(nums[i]);backtracking(nums, i + 1);result.pop_back();}return;}vector<vector<int>> subsets(vector<int>& nums) {backtracking(nums, 0);return results;}
};

90. 子集II

1. LeetCode链接

90. 子集 II - 力扣(LeetCode)

2. 题目描述

3. 解法

有了重复元素,就不得不先排序了。

class Solution {
public:vector<vector<int>> results;vector<int> result;void backtracking(vector<int>& nums, int start) {results.push_back(result);for (int i = start; i < nums.size(); i++) {if (i > start && nums[i] == nums[i - 1]) continue;result.push_back(nums[i]);backtracking(nums, i + 1);result.pop_back();}return;}vector<vector<int>> subsetsWithDup(vector<int>& nums) {sort(nums.begin(), nums.end());backtracking(nums, 0);return results;}
};

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

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

相关文章

最优化理论复习--最优性条件(二)

文章目录 上一篇约束极值问题的最优性条件基本概念一般情况的约束类型最优化条件 上一篇 最优化理论分析复习–最优性条件&#xff08;一&#xff09; 约束极值问题的最优性条件 基本概念 凸规划 m i n f ( x ) min f(x) minf(x) s . t . { g i ( x ) ≥ 0 &#xff0c; …

【深入理解 ByteBuf 之二】对象池设计模式概述

对象池设计模式并不在经典的 23 种设计模式之中&#xff0c;先说我认为实际上设计模式&#xff0c;这四个词听着唬人&#xff0c;其实本质上就是一种设计的想法思路罢了&#xff0c;然后把经常会用到的一些思路整理出来就成了经典的设计模式思路&#xff0c;重点其实在于运用。…

观远.AI数分 过笔试后已一面

笔试 正常的牛客题,笔试有监控,跳出网页超过3次算作无效 理论知识主要考察概率论、机器学习,影响比较深的两道分别是1、过拟合怎么办、欠拟合怎么办?2、重男轻女的国家习惯生到男为止,生男生女概率一样,问每家女孩数量的期望值是多少?编程题主要考察C++、SQL、python1、…

C++ cstdio

头文件 <cstdio> 是 C 中的标准输入输出库&#xff08;C Standard Input and Output Library&#xff09;头文件&#xff0c;它提供了一系列的输入输出函数。以下是其中一些主要的函数&#xff1a; 输入函数&#xff1a; scanf: 格式化输入函数&#xff0c;用于从标准输入…

系列一、 单例设计模式

一、单例设计模式 1.1、概述 单例模式&#xff08;Singleton Pattern&#xff09;是Java中最简单的设计模式之一。这种类型的设计模式属于创建者模式&#xff0c;它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同…

Android Matrix (二)具体图形变换参数的获取

Android Matrix &#xff08;二&#xff09;具体图形变换参数的获取 Matrix 类在 Android 中用于表示 3x3 的变换矩阵。这个矩阵可以应用于画布&#xff08;Canvas&#xff09;&#xff0c;视图&#xff08;View&#xff09;或者位图&#xff08;Bitmap&#xff09;&#xff0…

服务器日常维护要素,应该如何做好维护

维护服务器的目的是为了让服务器的性能保持最佳状态&#xff0c;发现问题及时解决&#xff0c;没有问题也可以对相关的应用和配置进行调优。但也有很多用户疑问&#xff0c;服务器具体会有哪些方面需要维护的&#xff0c;今天就一起来看看吧。 服务器日常维护&#xff0c;主要包…

Python基础入门第九课笔记(文件和文件夹)

1&#xff0c;新建文本并且写内容 a open(1.text,w) a.write("""aaa bbb ccc""") a.close() 2,seek( )移动文件指针 文件对象.seek(偏移量&#xff0c;起始位置) # 起始位置&#xff1a;0开头&#xff0c;1当前位置&#xff0c;2文件结尾…

预训练模型的分类,以及代表模型介绍

预训练模型主要可以分为几个大的类型&#xff0c;这些类型通常基于它们所应用的任务和数据类型。以下是一些主要类型的预训练模型及其代表性模型&#xff1a; 自然语言处理&#xff08;NLP&#xff09;模型&#xff1a; 自回归语言模型&#xff1a;这类模型根据上文内容预测下一…

7+坏死性凋亡+分型+预后模型+实验,筛坏死性凋亡相关基因并建模

今天给同学们分享一篇生信文章“MLKL and other necroptosis-related genes promote the tumor immune cell infiltration, guiding for the administration of immunotherapy in bladder urothelial carcinoma”&#xff0c;这篇文章发表在Apoptosis期刊上&#xff0c;影响因子…

【新华三】IPsec VPN 实验配置(地址固定)

【新华三】IPsec VPN 实验配置&#xff08;地址固定&#xff09; 注意实验需求配置思路配置命令拓扑R1基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA ISP_R2基础配置 R3基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA PCPC1PC2 检查建立成功查看命令清除IKE / IPsec S…

分享几个网盘资源搜索地址,总能找到你想要的

目录 [TOC](目录)一、前言二、地址分享三、结尾 一、前言 分享几个网盘搜索网站&#xff0c;总能找到你想要的。 二、地址分享 盘搜搜: https://pansoso.com/ 搜网盘: https://www.swangpan.com/ fastsoso: https://www.fastsoso.cc 猫狸盘搜: https://www.alipansou.com…

虚拟机安装intel架构的银河麒麟V10(SP1)

一 背景 银河麒麟是国产操作系统之一&#xff0c;是基于Linux内核的桌面操作系统&#xff0c;有自己的应用中心&#xff0c;具有一定的生态系统。今从官网下载了V10&#xff08;SP1&#xff09;镜像文件&#xff0c;在Windowns的VMware虚拟机上安装试用。 二 安装 1、 首先安装…

【漏洞复现】锐捷RG-UAC统一上网行为管理系统信息泄露漏洞

Nx01 产品简介 锐捷网络成立于2000年1月&#xff0c;原名实达网络&#xff0c;2003年更名&#xff0c;自成立以来&#xff0c;一直扎根行业&#xff0c;深入场景进行解决方案设计和创新&#xff0c;并利用云计算、SDN、移动互联、大数据、物联网、AI等新技术为各行业用户提供场…

桶装水在线订水送水系统平台搭建

在线订水系统&#xff0c;为您带来更快捷、更优质的服务。不仅是用户福音&#xff0c;更是商家营销利器。一体化管理&#xff0c;轻松搞定用户、水站、商品、订单及售后。多种营销活动&#xff0c;激发用户复购意愿。 功能亮点如下&#xff1a; 1. 注册登录&#xff1a;手机号…

Mysql 恢复误删库表数据

一、前提 1、如果你的数据库有备份文件&#xff0c;自己还原即可。 2、如果没有备份文件&#xff0c;那首先检查下你的 binlog 是否开启。如果未开启&#xff0c;那你就不用往下看了。如果开启了&#xff0c;可以往下看看。 1.1 查看位置 可以通过以下的命令查看是否开启了 bi…

梯度下降和反向传播:能改

一、背景 1.问题 通过顶点坐标公式&#xff0c;求解出抛物线最低点的w坐标&#xff0c;得到了让误差代价最小的w。同样的&#xff0c;也通过算数说明了这种一步到位求解的方式固然是好&#xff0c;但是在输入特征过多、样本数量过大的时候&#xff0c;却非常消耗计算资源。 …

Windows Server 2012 R2 Standard 版英特尔 以太网 wifi 无线网驱动网络适配器驱动程序

Windows Server 2012 R2 Standard 版安装好以后发现没有网络&#xff0c;网上搜了很多都是不行&#xff0c;后来找到了方法&#xff0c;解决你方法如下&#xff1a; Windows Server 2012 R2 Standard 版英特尔网络适配器驱动程序 1、以太网驱动&#xff0c;下载解压安装即可…

echarts - xAxis.type设置time时该如何使用formatter的分级模板

echarts 文档中描述了x轴的多种类型 一、type: ‘value’ ‘value’ 数值轴&#xff0c;适用于连续数据。 此时x轴数据是从零开始&#xff0c;有数据大小的区分。 【注意】 因为xAxis.data是为category服务的&#xff0c;所以xAxis.data里面设置的数据无效。 二、type: ‘ca…

前端适配750px设计稿

全局引入 (function(doc, win) {const docEl doc.documentElement,resizeEvt orientationchange in window ? orientationchange : resizeconst setFont function() {let clientWidth docEl.clientWidth;if (!clientWidth) return;if (clientWidth > 750) {docEl.styl…