剑指Offer之面试题22:栈的压入、弹出序列

C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解 剑指offer 面试题22:栈的压入、弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId=13&tqId=11174 参与人数:3413 时间限制:1秒 空间限制:32768K 本题知识点:栈 阅读详情


所有代码均通过G++编译器测试,仅为练手纪录。


//面试题22:栈的压入、弹出序列

//题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。

//     假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,

//     序列4,5,3,2,1是该压栈序列对应的一个弹出序列,

//     序列4,3,5,1,2就不可能是该压栈序列的弹出序列。


//面试题22:栈的压入、弹出序列
//题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
//     假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,
//     序列4,5,3,2,1是该压栈序列对应的一个弹出序列,
//     序列4,3,5,1,2就不可能是该压栈序列的弹出序列。

bool StackJudgeOrder(const int *pPushOrder,const int *pPopOrder,int nSize)
{
    if(NULL == pPushOrder || NULL == pPopOrder || nSize <= 0)
    {
        return false;
    }
    
    bool bResult = false;
    
    const int *pNextPush = pPushOrder;
    const int *pNextPop  = pPopOrder;
    
    stack<int> stackData;
    while(pNextPop - pPopOrder < nSize)
    {
        while (stackData.empty() || stackData.top() != *pNextPop)
        {
            if(pNextPush-pPushOrder == nSize)
            {
                break;
            }
            
            stackData.push(*pNextPush);
            ++pNextPush;
        }
        
        if(stackData.top() != *pNextPop)
        {
            break;
        }
        
        stackData.pop();
        ++pNextPop;
    }
    
    if(stackData.empty() && pNextPop-pPushOrder == nSize)
    {
        bResult = true;
    }
    
    
    return bResult;
}



ZhaiPillary

2016-12-25


YOLOv8 模型进化全解析:百种创新模块集成方法与实战部署指南(附资料链接) 动态网络 | DeformableConv/DynamicHead| +2.8% || 轻量化卷积 | GhostConv/MobileConv | +1.2% || 多尺度融合 | AFPN/ASFF | +3.5% || 注意力机制 | CA/EMA/SimAM | +1.8-4.2% | 阅读详情

相关推荐

UniApp实战:5分钟搞定极光推送(JG-JPush)从配置到消息测试全流程

本文详细介绍了如何在UniApp中快速集成极光推送(JG-JPush),从基础配置到核心代码实现,再到双端调试技巧和高级功能扩展。通过5分钟全流程指南,开发者可以轻松实现消息推送功能,提升应用的用户触达率。

sat99的博客 682

剑指Offer:面试题22 栈的压入、弹出序列

/* 栈的压入、弹出序列: 关键: 设定一个辅助栈。辅助栈中存放的就是弹出序列,数据栈中: 按照压栈序列,逐个压入元素,当辅助栈的栈顶元素与数据栈的栈顶元素相等时,两者同时弹出栈顶。 然后再比较辅助栈的栈顶是否数据栈的栈顶元素相同,若不相同,再向数据栈内压入元素,直至压入的元素 和辅助栈的栈顶元素相同时,两者再同时弹出。 如果发现辅助栈的栈顶元素,不仅与数据栈的栈顶元

qingyuanluofeng的专栏 755

折叠式共源共栅放大器设计/备忘

w折叠式共源共栅基本结构如图

Czy1377004611的博客 3万+

【剑指Offer】面试题22:栈的压入,弹出序列

一:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 二:解题思路 解决这个问题,就根据题目模拟栈的入栈和出栈的过程 如入栈

曦曦慕慕的专栏 383

AI Agent Harness Engineering 创业PMF验证工具:用户满意度+留存率+业务指标监测表

在AI Agent创业的浪潮中,我们看到了无数产品如雨后春笋般涌现,但最终能够真正找到PMF并存活下来的却寥寥无几。根据CB Insights的数据,创业公司失败的首要原因(占42%)是"没有市场需求"——换句话说,就是没有找到PMF。AI Agent产品由于其特殊性(交互范式的变革、技术复杂度高、用户期望管理困难等),PMF验证变得更加具有挑战性。传统的SaaS产品PMF验证框架虽然有参考价值,但无法完全适用于AI Agent这种新型产品形态。

AI智能探索者的博客 331

手把手教你学Simulink——基于Simulink的蚁群算法路径规划仿真建模示例

路径规划是机器人导航系统中的核心任务之一,旨在为机器人找到一条安全且高效的路径,使其能够从起点到达目标点,同时避免与障碍物发生碰撞。在开始之前,需要定义工作环境(例如地图),包括起点、终点以及可能存在的障碍物位置。通过本指南,我们介绍了如何基于Simulink结合MATLAB实现蚁群算法的路径规划仿真建模。

MHD0815的博客 222

剑指offer 面试题22 栈的压入、弹出序列

剑指offer 面试题22 栈的压入、弹出序列 题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列 1、2、3、4、5 是某栈的压栈序列,序列 4、5、3、2、1 是该压栈序列对应的一个弹出序列, 但 4、3、5、1、2 就不可能是该压栈序列的弹出序列。 package algor

LYZ 1066

Node-RED教程(二):Node-RED的面板的操作

Node-RED系列(二):Node-RED的面板的操作 要使用Node-RED去搭建一个物联网平台,链接设备,设备通信,就必须要先熟悉Node-RED的这种面板,对于一个新的项目,在动手做之前一点想对这个的技术的文档有足够的了解做起来才能游刃有余。本期我给大家介绍一下Node-RED的各种面板,熟悉这些面板后,在后续的搭建Iot服务中,会举重若轻,同时该系列的文档,难度会逐步加深,知道了本章解释的名称后对后续文章的理解有很大帮助。 面板1:默认节点选项列表 安装Node-RED后默认的节点分为这5大类

知无涯 1万+

《剑指offer》面试题22——栈的压入、弹出序列(C++)

文章目录栈的压入、弹出序列(C++)1、题目描述2、思路3、代码 栈的压入、弹出序列(C++) 1、题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是...

魏云舒的博客 245

基于多传感器融合的智身四足机器狗楼梯环境SLAM系统设计与实现

本文设计了一种基于多传感器融合的四足机器狗楼梯环境SLAM系统。系统采用Jetson Orin NX为主控制器,集成RealSense D435i深度相机和Livox Mid360激光雷达,在ROS2框架下实现平面定位精度<5cm、楼梯环境下导航不漂移的目标。通过多层次传感器融合策略、运动学约束优化和状态切换机制,解决了楼梯环境下的定位累积误差问题,实现了平面与楼梯环境的自动识别切换及精度复位功能。硬件设计注重传感器布局优化和精确标定,软件架构采用分层设计,确保实时性能。该系统为四足机器人在复杂地形中

huanghm88的专栏 238

28、解耦控制与晶圆表面缺陷模式识别

本文介绍了两种不同领域的技术方法:基于端口受控哈密顿(PCH)的三水箱液位系统解耦控制方法,以及基于无监督学习的晶圆表面缺陷模式识别方法。前者通过能量整形实现系统解耦与稳定控制,具有良好的抗干扰性和鲁棒性;后者采用无监督预训练与分类微调两阶段策略,利用WaUSM采样方法提升特征提取能力,在WM-811K数据集上实现了先进的分类性能。文章对比了两种方法的核心技术与优势,并探讨了其在工业控制与半导体制造中的应用前景及未来发展方向,为相关领域的研究与实践提供了有价值的参考。

git9versioner的博客 75

【剑指offer】面试题22:栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等,例如压栈序列:1、2、3、4、5。序列:4、5、3、2、1是该栈序列对应的一个弹出序列。//思路:知彼知己方能百战不胜,哈哈。 我们现在判断栈的弹出顺序是否合法,那我们就必须掌握到栈的基本特性:后进先出,(每次弹出栈的栈顶), //那我们知道了栈顶,根据压栈顺序,我们就能

Steve_Abelieve 403

45 - Android系统源码-crosvm 实战:基于 KVM 的 Rust 安全虚拟机监控器核心技术

摘要:crosvm 是 Google 开发的基于 KVM 的轻量级虚拟机监控器(VMM),采用 Rust 语言编写,专为 ChromeOS 和 Android 设计。其核心特点包括: 安全架构:通过 Rust 的内存安全特性和多进程隔离(每个设备运行在独立沙箱进程)大幅降低攻击面 性能优化:基于 KVM 的硬件虚拟化支持,结合异步 I/O (io_uring/epoll) 实现高效设备模拟 模块化设计:清晰的 trait 抽象层(Hypervisor/Vm/Vcpu)支持跨平台扩展 Android 集成

保持专注,保持热爱 225

【剑指offer】面试题22:栈的压入弹出序列

题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。

solar一抹阳光的专栏 622

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【剑指Offer学习】【面试题22:栈的压入、弹出序列】

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。 解题思路:解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字依次压入该辅助栈,并按照第二个序列的顺序依次从该栈中弹出数字。

https://github.com/Wang-Jun-Chao 5978

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

剑指offer面试题22:栈的压入弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 栈是先进后出的结构,所以出栈顺序一定是有规则的;下面来分析一下 借助一个辅助栈,按照压入序列...

liuxiaokai_liu的博客 252

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【剑指 Offer 学习】【面试题 22: 栈的压入、弹出序列】【思路】

题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)   思路: 创建一个栈用于压入弹出元素 遍历第一个序列,依次压入栈 第二个序...

handsome_zan的博客 171

《剑指Offer》面试题22:栈的压入,弹出序列

《剑指Offer》 P134面试题22:栈的压入,弹出序列题目:

(●—●) 614

[剑指offer]面试题22:栈的压入、弹出序列

面试题22:栈的压入、弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5 是某栈的压栈序列,序列4、5、3、2、1 是该压栈序列对应的一个弹出序列,但 4、3、5、1、2 就不可能是该压栈序列的弹出序列。 压栈序列为1、2、3、4、5,弹出序列4、5、3、2、1对应的压栈和弹出过程 一个压入顺序为1、2、3、4、5的栈没有一个弹出序列为4、3、5、1、2 规律: 如果下一个弹出的数字刚好是栈顶数字,

m0_51955470的博客 296

《剑指offer》面试题22:栈的压入、弹出序列(java实现)

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) ——来源于《剑指offer》 解题思路:借助一个辅助栈,如果下一个弹出的数字刚好是栈...

芊雨的博客 206

《剑指Offer》面试题22:栈的压入、弹出序列

《剑指Offer》面试题22:栈的压入、弹出序列题目描述    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 解题思路    判断一个序列是不是栈的弹出顺序的规律:如果下一个弹出的...

南方有乔木的博客 510

剑指Offer:面试题22——栈的压入,弹出序列(java实现)

题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 思路: 遍历待测试序列,如果当前元素在栈顶,出栈即可,否则,查看是否所有待入栈元素已入栈,如是说明当前元素在栈里面

一个人漫步走 2347

【重点】【栈】剑指offer——面试题22:栈的压入、弹出序列

剑指offer——面试题22:栈的压入、弹出序列 要理解并背诵此题! 参考网址: https://www.cnblogs.com/AndyJee/p/4651281.html https://www.nowcoder.com/profile/8709341/codeBookDetail?submissionId=17099336 思路: 1.建立一个辅助栈; 2.将第一个序列的数字压...

Allenlzcoder的博客 415

剑指Offer面试题22(Java版):栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字依次压入该辅助栈,并按照第二个序列的顺序依次从该栈

D.K专栏 2881

剑指Offer——面试题22:栈的压入、弹出序列

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 分析   如果,下一个弹出的数字刚好

不爱学习 544

剑指offer面试题22:栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 思路:遍历第二个序列,如果下一个弹出的数字刚好是栈顶数字,则直接弹出。如果不在栈顶,把压栈序列中还没有入栈的数组压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。如果所有的数字都压入栈了仍然没有找到下一个弹出的数字,那么该序列不可能是一个弹出序列。#include <iostream> #include

249
上一篇: 剑指Offer之面试题21:包含min函数的栈
下一篇: 剑指Offer之面试题23:从上往下打印二叉树
沐寒握冰
博客等级 码龄14年 57粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值