文章目录

  • 题目描述
  • 代码 && 思路
    • 二刷

题目描述

打卡第三天!加油加油~

  • 数据结构笔试题貌似也会考= =,不过考法不一样,有点规律。
  • 总的来说还是挺有意思的,我们直接来看代码吧~

代码 && 思路

  • O(n) && O(n),依靠栈来实现
  • 思路:栈循环装入元素,如果当前装入元素正好匹配弹出元素,就进行一个弹出循环
  • 注意~要加入一个 isEmpty() 进行短路判断噢,避免空栈pop报错
class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {int len = pushed.length;Stack<Integer> stack = new Stack<>();int i = 0, j = 0;for(; i < len; i++) {stack.push(pushed[i]);// 每次push后,循环跑一次 popedwhile(!stack.isEmpty() && stack.peek() == popped[j]) {stack.pop();j++;}}// j 能跑完则说明可行return j == len;}
}

二刷

  • 核心思路:每次都塞进一个。每塞进一个,就开个循环,能弹出多少就弹出多少。
class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {Deque<Integer> stack = new ArrayDeque<>();int popIndex = 0;for(int i = 0; i < pushed.length; i++) {stack.push(pushed[i]);while(!stack.isEmpty() && stack.element() == popped[popIndex]) {stack.pop();popIndex++;}}return popIndex == popped.length;}
}

【LeetCode笔记】剑指 Offer 31. 栈的压入、弹出序列 (Java、栈)相关推荐

  1. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

  2. 剑指offer-21.栈的压入弹出序列

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

  3. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  4. python 栈的压入弹出序列

    | 栈的压入和弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序 ...

  5. 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列

    [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 文章目录 [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 package offer;import java.uti ...

  6. 剑指offer 31.栈的、压入弹出序列

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是 ...

  7. 【LeetCode】剑指 Offer 30. 包含min函数的栈

    [LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...

  8. 【LeetCode】剑指 Offer 09. 用两个栈实现队列

    [LeetCode]剑指 Offer 09. 用两个栈实现队列 文章目录 [LeetCode]剑指 Offer 09. 用两个栈实现队列 一.双栈 总结 一.双栈 维护两个栈,第一个栈支持插入操作,第 ...

  9. 剑指Offer 31 栈的压入、弹出序列

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

  10. 剑指offer——31.栈的压入、弹出序列(想法不错,比剑指的简单)

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

最新文章

  1. 百度吴甜宣布百度AI加速器第二期开营,要让创业者跑得更快
  2. java聊天程序源代码_java聊天程序源代码
  3. SOA与云计算相结合推动企业发展
  4. jquery getJSON 中对超时Timeout的处理
  5. 并发编程之 Java 内存模型 + volatile 关键字 + Happen-Before 规则
  6. 36.JVM内存分哪几个区,每个区的作用是什么、如和判断一个对象是否存活、java垃圾回收机制、垃圾收集的方法有哪些、java类加载过程、类加载机制、双亲委派、Minor GC和Major GC
  7. dockerfile 与 docker-compose的区别
  8. Hug a developer today
  9. “让天下没有难开的店”,宣言来自无人车公司AutoX
  10. 根据crash学习ARM64虚拟地址空间布局
  11. 基于php技术的Web的电子病历管理系统
  12. mantis linux 安装,linux安装mantis详细步骤
  13. Android ——XML布局实现桌面台球的开始界面
  14. STM32上电启动代码详解(转自安富莱电子)
  15. 载入模型部分权重的方法
  16. android开发中遇到的技术难题,android开发过程中遇到的问题以及解决办法
  17. Android音频AAC硬编码
  18. 模电数电微机接口微机应用实验设备QY-MS535F
  19. 项目经理手册-项目经理需要铭记在心的话
  20. 4kw机柜无通道封闭CFD模拟分析及优化(上篇) -孙长青

热门文章

  1. 2017年网易校招题 输入一个数将其变为斐波那契数(最小步数)
  2. 多商户商城源码_多商户小程序开发搭建?开达应用多商户入驻商城小程序制作教程...
  3. bilibili 解析_用 Python 抓取 bilibili 弹幕并分析!
  4. python hstack_Python小白数据科学教程:NumPy (下)
  5. 多余的读写端口什么时候会对程序造成影响_程序员需要了解的硬核知识之控制硬件...
  6. pytorch中的参数初始化方法
  7. 冈萨雷斯《数字图像处理》读书笔记(十一)——表示和描述
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 26丨餐馆营业额变化增长【难度中等】​
  9. Replace Data Value with Object(以对象取代数据值)
  10. android checkbox监听另一个checkbox选中和不选中_一个真正0基础小白学习前端开发的心路历程...