剑指 Offer(第2版)面试题 31:栈的压入、弹出序列

剑指 Offer(第2版)面试题 31:栈的压入、弹出序列

  • 剑指 Offer(第2版)面试题 31:栈的压入、弹出序列
    • 解法1:模拟

剑指 Offer(第2版)面试题 31:栈的压入、弹出序列

题目来源:42. 栈的压入、弹出序列

解法1:模拟

用一个栈 stk 来模拟实时进出栈操作:

在 for 循环里依次向栈 stk 插入数组 pushV 中的元素,每插入一个数字就检查有没有能 pop 出来的,具体做法是对比 stk.top() 和 popV[indexOfPop],若相等,则弹出元素,indexOfPop++;反正,不做操作。

如果最后栈 stk 为空,说明第二个序列是否可能为该栈的弹出顺序。

代码:

class Solution
{
public:bool isPopOrder(vector<int> pushV, vector<int> popV){// 特判if (pushV.size() != popV.size())return false;if (pushV.empty() || popV.empty())return true;stack<int> stk;int n = pushV.size(), indexOfPush = 0, indexOfPop = 0;for (indexOfPush = 0; indexOfPush < n; indexOfPush++){stk.push(pushV[indexOfPush]);while (!stk.empty() && stk.top() == popV[indexOfPop]){stk.pop();indexOfPop++;}}return stk.empty();}
};

复杂度分析:

时间复杂度:O(n),其中 n 是数组 pushV 和 popV 的长度。push 和 pop 各有 n 次。

空间复杂度:O(n),其中 n 是数组 pushV 和 popV 的长度。栈最多要存储 n 个元素,此时 popV 是 pushV 的倒序序列。

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

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

相关文章

ES常见查询总结

目录 1:查询总数2:查询所有数据3:查询指定条数4:根据ID查询5:一个查询字符串搜索6:match搜索7:term搜索8:bool搜索9:must多条件匹配查询10:Should满足一个条件查询11: must_not必须不匹配查询12:多个字段查询内容13:一个字段查询多个内容14:通配符和正则匹配15:前缀查询16:短语…

VRRP(虚拟路由冗余协议)

一.VRRP简介 1.VRRP是什么 Virtual route Redundancy Protocol&#xff0c;也叫虚拟路由器冗余协议。 利用VRRP&#xff0c;一组路由器协同工作&#xff0c;单只有一个处于Master状态&#xff0c;处于该状态的路由器&#xff08;的接口&#xff09;承担实际的数据流量转发任…

微信小程序uniapp记住密码

记住密码功能 在请求登录接口成功后&#xff0c;我们需要判断用户是否勾选记住密码&#xff0c;如果是&#xff0c;则将记住密码状态、账号信息存入本地。 下次登录时&#xff0c;获取本地的记住密码状态&#xff0c;如果为true则获取本地存储的账号信息&#xff0c;将信息回填…

循环验证表单信息

1.需求 要求在提交申请时校验每个地址使用信息的必填项是否填写完整 2.最终效果 3.具体操作 <el-dialog v-model"data.applyVisible" title"申请地址" center destroy-on-close><el-button type"primary" click"handleTabsAdd&…

【docker】docker入门与安装

Docker 一、入门 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP及其运行环境能做到一次镜像,处处运行。 Docker运行速度快的原因 Docker有比虚拟…

图论专栏一《图的基础知识》

图论&#xff08;Graph Theory&#xff09;是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形&#xff0c;这种图形通常用来描述某些实体之间的某种特定关系&#xff0c;用点代表实体&#xff0c;用连接两点的线表示两个实体间具有的…

实验06:VLAN配置

1.实验目的&#xff1a; VLAN&#xff08;Virtual Local Area Network&#xff09;是一种通过逻辑方式而不是物理方式划分局域网的技术&#xff0c;可以提高网络性能、安全性和管理效率。VLAN的划分方法有基于端口、基于MAC地址、基于协议和基于IP组播等。VLAN之间的通信需要路…

Oracle数据库本地部署结合内网穿透实现公网环境PLSQL远程访问

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

什么是纯净IP?如何判断IP地址的纯净度?有哪些干净IP推荐?

您是否想知道什么使代理“干净”或如何确保您的代理不会将您列入网站的黑名单&#xff1f;对于通过代理访问网络的人来说&#xff0c;干净的代理是无缝在线体验的重要组成部分。在这篇文章中&#xff0c;我们将深入研究干净代理的世界&#xff0c;并探讨决定其质量的因素。 一、…

SiteGround SITE TOOLS主机站点工具设置教程

当你使用SiteGround搭建WordPress或WooCommerce网站后&#xff0c;你会经常登录到两个不同的网站后台&#xff1a;一个是SiteGround的Site Tools后台&#xff0c;用于进行网站的安全、速度优化、FTP工具和网站备份等技术操作&#xff1b;另一个是WordPress网站后台&#xff0c;…

Redis—SpringDataRedis

与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 SpringDataRedisRedisTemplate方案一方案二 &#x1f48e;总结 SpringDataRedis SpringData是Spring中数据操作的模块&#xff0c;包含对各种数据库的集成&#xff0c;其中对Redis的集成模块就叫做SpringDataRedis…

C# 字符串格式化

写在前面 在日常编程中&#xff0c;经常需要对字符串进行格式化操作&#xff0c;以便呈现为不同的格式&#xff0c;满足各种各样的显示需求&#xff0c;C#的字符串格式化参数是非常丰富的&#xff0c;这里做个简单的列举&#xff0c;以供后续参考和延伸。 代码实现 var curr…

vite+vue3+electron搭建项目

编辑器使用vscode&#xff0c;打开一个空文件夹 第一步 初始化vite项目 初始化vite项目&#xff0c;命令 npm init vite 第二步 下载依赖 进入新建的项目&#xff0c;下载依赖&#xff0c;命令 cd vite-projec npm i第三步 使用cnpm下载 electron依赖 新建一个终端&#…

HTTP 408错误:请求超时,如何避免

大家好&#xff0c;今天我们来聊聊一个常见的问题——HTTP 408错误&#xff0c;也就是请求超时。这个错误就像是一个网络中的时间旅行者&#xff0c;总是不期而至&#xff0c;让人摸不着头脑。但是别担心&#xff0c;我有一些方法可以帮助你避免这个错误。 首先&#xff0c;我…

Python的模块与包

前言 当你编写Python程序时&#xff0c;你经常会引入别人编写好的模块。有的模块是Python自带的&#xff0c;你无需安装就能直接引用&#xff0c;而有的模块则是由Python生态系统里的第三方工程师提供的&#xff0c;你需要通过pip安装之后&#xff0c;才能进行使用。由…

Electron 跨平台打包

最近利用 Electron 制作跨平台安装包&#xff0c;记录步骤&#xff0c;踩坑多多。 首先&#xff0c;一步步搭建项目 一、搭建环境 初始化 package.json&#xff0c;这里要求 node 版本不低于14.16&#xff0c;我用的 v14.16.0&#xff0c;16版本在 Linux 下容易出现安装依赖…

js传递json数据过大的解决方案

protobufjs 使用protobuf&#xff0c;定义如下结构 Person.protobuf syntax "proto3";message Person {string name 1;int32 age 2; }Person.thrift namespace java com.example.Personstruct Person {1: required string name,2: required i32 age }使用bench…

教师考编需要什么条件

教师考编&#xff0c;了解考编需要什么条件是非常重要的。接下来&#xff0c;我来介绍几点教师考编的条件。 需要具备相应的学历背景。一般来说&#xff0c;考编需要具备本科或以上学历&#xff0c;并且所学专业与所报考的岗位相关。在某些特殊情况下&#xff0c;如报考幼儿园教…

【C语言(十一)】

C语言内存函数 一、memcpy使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果sourc…

什么是OPcache?它对性能有什么影响?

OPcache&#xff08;Opcode Cache&#xff09;是 PHP 的一个内置扩展&#xff0c;用于缓存 PHP 脚本的解释代码&#xff08;opcode&#xff09;&#xff0c;从而提高 PHP 应用程序的性能。当 PHP 脚本首次被解释执行时&#xff0c;PHP 将脚本编译成一组中间代码&#xff08;opc…