当前位置: 首页 > news >正文

经典问题——验证栈序列

我们先来看题目描述:

给定 pushed 和 popped 两个序列,每个序列中的值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true ;否则,返回 false 。

示例 1:

输入:pushed = [1,2,3,4,5] , popped = [4,5,3,2,1]

输出:true

解释:我们可以按以下顺序执行:push(1) , push(2) , push(3) , push(4) , pop() -> 4 , push(5) , pop() -> 5 , pop() -> 3, pop() -> 2 , pop() -> 1 。

示例 2:

输入:

pushed = [1,2,3,4,5] , popped = [4,3,5,1,2]

输出:

false

解释:

1 不能在 2 之前弹出。

提示:

1 <= pushed.length <= 1000 0 <= pushed[i] <= 1000 pushed 的所有元素互不相同 popped.length == pushed.length popped 是 pushed 的一个排列。

解析:

只要模拟入栈和出栈的过程,将一个数进行入栈操作的时候检查该数是否为下一个要出栈的数,如果是就弹出该数,并继续检查栈中的数。如果能扫描完所有要出栈的数,就是一个合法的栈序列。

Java 代码实现:(使用 ArrayList 模拟栈)

class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { List<Integer> S=new ArrayList<>(); int j=0; for(int i=0;i<pushed.length;i++){ S.add(pushed[i]); while(S.size()>0&&j<popped.length&&S.get(S.size()-1)==popped[j]){ S.remove(S.size()-1); j++; } } return j==popped.length; } }

C++ 代码实现:(直接用 STL stack )

class Solution { public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int>S; int n=pushed.size(); int j=0; for(int i=0;i<n;i++){ S.push(pushed[i]); while(S.size()>0&&j<n&&S.top()==popped[j]){ S.pop(); j++; } } return j==n; } };
http://www.jsqmd.com/news/1009128/

相关文章:

  • 从LPC到eSPI:一次硬件总线的“瘦身”与“提速”之旅,聊聊嵌入式工程师的升级烦恼
  • VEML7700 vs BH1750:两大主流光照传感器怎么选?实测对比精度、功耗与易用性
  • STM32 HAL库驱动TB6612模块:精准控制编码电机转速与转向(附CubeMX配置)
  • NSK W1406FS-1-C3T5 精密丝杠技术规格手册
  • 告别卡顿!手把手教你为Android App集成ExoPlayer播放器(含DASH/HLS直播支持)
  • 别再瞎选开发方法了!一张图教你根据项目类型匹配预测型、混合型还是敏捷
  • 职务侵占被立案侦查怎么办?2026北京这5家辩护律师推荐 - 本地品牌推荐
  • Adobe CC通用补丁工具技术解析:开源逆向工程实践指南
  • 告别卡顿!手把手教你为Android App集成ExoPlayer播放器(含HLS直播支持)
  • NSK精密滚珠丝杠W2004SA参数与应用指南
  • 从F1到H7:一张图理清STM32各系列“辈分”与升级路线,告别重复学习
  • LaTeX参考文献样式选哪个?8种bibliographystyle(plain/ieeetr/acm...)实战对比与选择指南
  • 别再只盯着压敏电阻了!聊聊TVS管在单片机IO口防静电上的实战选型(附型号推荐)
  • 技术深度解析:如何实现网盘直链下载的高效跨平台解决方案
  • 别再傻傻分不清了!给嵌入式新手的CPLD与FPGA选型避坑指南(附Xilinx/Altera型号对比)
  • 别再傻傻分不清!嵌入式开发中TTL、RS-232、RS-485到底怎么选?从电平、距离到芯片选型一次讲透
  • 汇川AM系列PLC玩转CNC:手把手教你用File模式读取G代码文件(附避坑指南)
  • 别再死磕深度学习:浅层跨模态哈希(LSH/CMFH/SCRATCH)的工程实践与避坑指南
  • 2026年消防培训学校怎么选?行业现状、机构分析及就业趋势解读 - 优质品牌商家
  • 从MC1496到三极管:手把手教你用频谱分析仪实测两种混频器性能差异
  • 2026年近期湖南GRC翘脚优质厂家选型指南 - 品牌鉴赏官2026
  • 从图神经网络到随机森林:MolGpKa与Machine-learning-meets-pKa,哪个开源pKa预测模型更适合你的项目?
  • php 内核源码二次开发 语法特征新增/定制 内核漏洞修复完整流程 完整代码 全部大白话解释
  • GD32F30x独立看门狗和窗口看门狗到底怎么选?一个项目实例讲清楚配置差异与避坑点
  • 别再只看主频了!实测CoreMark:玄铁C910、Cortex-A72、StarFive U74谁才是嵌入式性价比之王?
  • 2026国内粮食烘干设备厂商综合实力评测:技术、服务与落地效能全景对比 - 互联网科技品牌测评
  • 免费解锁Adobe全家桶:开源破解工具Adobe-GenP 3.0终极指南
  • 2026年6月随州电缆桥架订购厂家选择指南:聚焦玻璃钢复合材料的创新应用 - 品牌鉴赏官2026
  • CS5090EA实战笔记:如何为你的两串锂电池项目选择合适的升压充电方案?
  • GPT4ALL进阶玩法:不止是聊天,用它的Python API和Docker部署打造你的私有化AI服务