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

LeetCode-946-验证栈序列

LeetCode-946-验证栈序列

给定 pushedpopped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 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
  • poppedpushed 的一个排列
class Solution {
    /**
     * 模拟
     * 当栈顶元素跟当前出栈的元素(popped[index1])一致时, 栈顶元素出栈,
     * 当栈顶元素跟当前出栈的元素(popped[index1])不一致时, 元素入栈(pushed[index2]), 一直到
     * 所有元素入栈, 如果此时栈顶元素还不跟当前需要出栈元素相等, 说明无法达成该出栈序列
     */
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        int pushIndex = 0, popIndex = 0, len = pushed.length;
        Deque<Integer> stack = new ArrayDeque<>();
        while (popIndex < len) {
            while (stack.isEmpty() || stack.peek() != popped[popIndex]) {
                if (pushIndex >= len) {
                    return false;
                }
                stack.push(pushed[pushIndex++]);
            }
            stack.pop();
            popIndex++;
        }
        return true;
    }
}

相关文章:

  • vnc服务
  • Js各种时间转换问题(YYYY-MM-DD 时间戳 中国标准时间)
  • 李迟2022年8月工作生活总结
  • 百度 T4 幕后揭秘!这份 Java 面试全栈手册竟让面试官节节败退
  • 干货分享:有什么软件可以让照片动起来?
  • 鸡防治球菌病的措施 鸡防球菌病抗菌的药
  • 电子产品有害物质测试项目有哪些?
  • 鸡得葡萄球菌病的危害 鸡什么药防治鸡球菌病
  • leetcode236. 二叉树的最近公共祖先
  • 阿里巴巴Java面试题、笔试题(含答案)
  • mybatis 批量插入和批量修改
  • (附源码)php投票系统 毕业设计 121500
  • Sulfo-Cy5羧酸,Sulfo-Cyanine5 carboxylic acid,水溶性荧光染料标记羧基,激发波长(nm):649发射波长(nm):665
  • 深度神经网络的特征表示,深度神经网络通俗理解
  • 南大通用GBase 8a MPP Cluster管理工具简介
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 10个最佳ES6特性 ES7与ES8的特性
  • Angular 4.x 动态创建组件
  • Apache Pulsar 2.1 重磅发布
  • ESLint简单操作
  • select2 取值 遍历 设置默认值
  • Tornado学习笔记(1)
  • underscore源码剖析之整体架构
  • vue脚手架vue-cli
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 初识 webpack
  • 分布式熔断降级平台aegis
  • 高性能JavaScript阅读简记(三)
  • 计算机在识别图像时“看到”了什么?
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 入门到放弃node系列之Hello Word篇
  • 事件委托的小应用
  • 我的面试准备过程--容器(更新中)
  • 云大使推广中的常见热门问题
  • 在Mac OS X上安装 Ruby运行环境
  • zabbix3.2监控linux磁盘IO
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #LLM入门|Prompt#3.3_存储_Memory
  • #pragma pack(1)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core引入性能分析引导优化
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • @RequestMapping用法详解
  • @我的前任是个极品 微博分析
  • [android] 看博客学习hashCode()和equals()
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [CC-FNCS]Chef and Churu