代码随想录 DAY28 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 

切割字符串,并且在每一个切割过的字符串后面加上 ‘ .’

返回条件:逗点个数==3

        如果最后一小节符合要求,就将该字符串添加到结果集中

循环中:从start到i 符合要求,就继续添加逗点和字符

        不符合下面就不用看了。

不要试图一下找完,从第一个开始算。

class Solution {
private:
vector <string> result;void transfer(string&s,int start,int pointnum){if(pointnum==3){if(isVaild(s,start,s.size()-1)){result.push_back(s);}return;}for(int i=start;i<s.size();i++){if(isVaild(s,start,i)){s.insert(s.begin() + i + 1,'.');pointnum++;transfer(s,i+2,pointnum);pointnum--;s.erase(s.begin()+i+1);}else{break;}}}bool isVaild(const string& s, int start, int end) {if (start > end) {return false;}if (s[start] == '0' && start != end) { // 0开头的数字不合法return false;}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;}public:vector<string> restoreIpAddresses(string s) {result.clear();if(s.size()<4||s.size()>12) return result;transfer(s,0,0);return result;}
};

78.子集 

结束条件+回溯过程

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

90.子集II  

只是判断生成的子集是否重复

子集重复就是数字重复,和上一级递归的数字比较是否使用过

class Solution {
private:
vector<vector<int>> result;
vector<int> partset;void transfer(vector<int>& nums,int start,vector<bool> used){result.push_back(partset);for(int i=start;i<nums.size();i++){//数字重复             上一个已经使用过if(i>start&&nums[i]==nums[i-1]&&used[i-1]==false){continue;}used[i]==true;partset.push_back(nums[i]);transfer(nums,i+1,used);used[i]=false;partset.pop_back();}
}
public:vector<vector<int>> subsetsWithDup(vector<int>& nums) {result.clear();partset.clear();sort(nums.begin(),nums.end());vector<bool> used(nums.size(),false);transfer(nums,0,used);return result;}
};

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

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

相关文章

数学建模的六个步骤

一、模型准备 了解问题的实际背景&#xff0c;明确其实际意义&#xff0c;掌握对象的各种信息&#xff0c;以数学思路来解释问题的精髓&#xff0c;数学思路贯彻问题的全过程&#xff0c;进而用数学语言来描述问题。要求符合数学理论&#xff0c;符合数学习惯&#xff0c;清晰…

苹果iOS 16.6 RC发布:或为iPhone X/8系列养老版本

今天苹果向iPhone用户推送了iOS 16.6 RC更新(内部版本号&#xff1a;20G75)&#xff0c;这是时隔两个月的首次更新。 按照惯例RC版基本不会有什么问题&#xff0c;会在最近一段时间内直接变成正式版&#xff0c;向所有用户推送。 需要注意的是&#xff0c;鉴于iOS 17正式版即将…

第1题 好的序列(seq)

一个长为k的序列b1, b2, ..., bk (1 ≤ b1 ≤ b2 ≤ ... ≤ bk ≤ n)&#xff0c;如果对所有的 i (1 ≤ i ≤ k - 1)&#xff0c;满足bi | bi1&#xff0c;那么它就是好的序列。这里a | b表示a是b的因子&#xff0c;或者说a能整除b。 给出n和k&#xff0c;求…

git取消文件或文件夹追踪

1. 创建仓库时&#xff0c;在本地仓库根目录&#xff0c;创建.gitignore文件&#xff0c;写入忽略规则。规则可以是文件名&#xff0c;或者正则表达式。git 对于 .gitignore配置文件是按行从上到下进行规则匹配的。对于.gitignore文件本身的修改也会被提交到远程端。 2. 删除已…

Python获取接口数据

首先我们需要下载python&#xff0c;我下载的是官方最新的版本 3.8.3 其次我们需要一个运行Python的环境&#xff0c;我用的是pychram&#xff0c;需要库的话我们可以直接在setting里面安装 代码&#xff1a; # -*- codeing utf-8 -*- from bs4 import BeautifulSoup # 网页…

docker中搭建lnmp

目录 一&#xff1a;项目环境 1、主机ip需求 2、 任务需求 二&#xff1a;多级构建Dockerfile实验部署 lnmp 1、先部署一个有所有依赖包的镜像 2、搭建nginx 3、搭建mysql 4、搭建php 三&#xff1a;一级构建安装lnmp 1、构建自定义docker网络 2、构建nginx容器&#x…

Java版Spring Cloud+Spring Boot+Mybatis+uniapp知识付费平台讲解

提供私有化部署&#xff0c;免费售后&#xff0c;专业技术指导&#xff0c;支持PC、APP、H5、小程序多终端同步&#xff0c;支持二次开发定制&#xff0c;源码交付。 Java版知识付费-轻松拥有知识付费平台 多种直播形式&#xff0c;全面满足直播场景需求 公开课、小班课、独…

降压电路原理 12V电源是如何下降到5V?

引言&#xff1a; 12V-5V开关电源设计原理&#xff1a;以12V电压作为输入&#xff0c;通过控制开关电路的通断时间&#xff0c;实现电感的充放电时间&#xff0c;改变输出电压的平均值&#xff0c;然后进行LC滤波&#xff0c;对输出电压进行电压和电流反馈控制&#xff0c;使其…

企业知识管理系统安全是重中之重

企业开展知识管理工作的益处是全方位的&#xff0c;效果能从业务的各方面得到体现&#xff0c;最终效果就是企业竞争力的提升与企业经营业绩的提升。 知识管理系统的意义在于&#xff0c;构建系统的知识库&#xff0c;对纷杂的知识内容&#xff08;方案、策划、制度等&#xf…

Maven引入第三方jar包到问题处理

Maven项目引入第三方jar包到问题处理 背景:1. 下载jar包,通过maven命令手动安装到本地maven仓库2. jar放到项目路径下,通过pom直接引用 背景: 开发中会遇到需要使用第三方依赖的时,第三方依赖在中央仓库没有,解决方法 1. 下载jar包,通过maven命令手动安装到本地maven仓库 mv…

MybatisPlus使用排序查询时,将null值放到最后

1用户需求 查询结果&#xff0c;按照某些字段进行排序&#xff0c;将为null的值放到最后。按照更新时间排序&#xff0c;但是更新时间可能为null&#xff0c;因此将null的数据放到最后。 2解决方案 最简单的方式&#xff0c;当然是下面这种直接在SQL最后面 NULLS LAST &…

502 Bad GateWay报错的解决方法

什么是502 bad gateway 报错 简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。 产生错误的原因 1.连接超时 我们向服务器发送请求 由于服务器当前链接太多&am…

自然语言处理从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):基础知识]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 大型语言模型&#xff08;LLMs&#xff09;是LangChain的核心组件。LangChain不提供大型语言模型&#xff0c;而是提供了一个标准接口&#xff0c;通过该接口我们可以与各种LLMs进行交互。LLM类是专为与LLM接口设计的类…

89、简述RabbitMQ的架构设计

简述RabbitMQ的架构设计 BrokerQueueExchangeRoutingKeyBinding信道架构设计图 Broker RabbitMQ的服务节点 Queue 队列&#xff0c;是RabbitMQ的内部对象&#xff0c;用于存储消息。RabbitMQ中消息只能存储在队列中。生产者投递消息到队列&#xff0c;消费者从队列中获取消息…

python:使用CNN神经网络实现CSV数据分类预测

作者:CSDN @ _养乐多_ 本文记录了一个使用Keras构建和训练卷积神经网络(CNN)的示例。这个CNN模型用于分类任务,并且训练样本数据集来自一个CSV文件。我们的目标是根据输入特征将样本分为不同的类别。 这个代码可以在遥感领域的多个方向进行应用,其中一些常见的应用方向包…

科技与人元宇宙论坛跨界对话

近来&#xff0c;“元宇宙”成为热门话题&#xff0c;越来越频繁地出现在人们的视野里。大家都在谈论它&#xff0c;但似 乎还没有一个被所有人认同的定义。元宇宙究竟是什么&#xff1f;未来它会对我们的工作和生活带来什么样 的改变&#xff1f;当谈论虚拟现实&#xff08;VR…

ES6基础知识五:你是怎么理解ES6新增Set、Map两种数据结构的?

如果要用一句来描述&#xff0c;我们可以说 Set是一种叫做集合的数据结构&#xff0c;Map是一种叫做字典的数据结构 什么是集合&#xff1f;什么又是字典&#xff1f; 集合 是由一堆无序的、相关联的&#xff0c;且不重复的内存结构【数学中称为元素】组成的组合 字典 是…

python-将矩阵转化成一列

在进行实际的案例开发过程中&#xff0c;我们经常用到矩阵、数组&#xff0c;而对于这两者学习变得至关重要。在学习矩阵及相关数组的操作过程中&#xff0c;不像matlab那么方便直接操作就可以了&#xff0c;而是需要进行导库才可以进行操作&#xff0c;python主要的学习数组和…

vue2生命周期图

生命周期全过程如下&#x1f447;详解 一:生命周期之创建阶段 1.创建一个Vue实例【new Vue()】 2.初始化Vue实例,第一次初始化,初始化Vue当中的事件和生命周期方法【Init Events Lifecycle】 ☆☆☆调用生命周期方法当中的beforCreate,调用这个方法的时候有一个特点,就是在调…

Matlab中实现对一幅图上的局部区域进行放大

大家好&#xff0c;我是带我去滑雪&#xff01; 局部放大图可以展示图像中的细节信息&#xff0c;使图像更加直观和精美&#xff0c;此次使用magnify工具实现对绘制的figure选择区域绘制&#xff0c;图像效果如下&#xff1a; 1、基本图像绘制 这里选择绘制一个散点图&#xff…