【剑指offer】面试题31:栈的压入,弹出序列
发布日期:2021-04-30 21:02:30 浏览次数:112 分类:精选文章

本文共 992 字,大约阅读时间需要 3 分钟。

要判断一个弹出的序列是否符合栈的弹出顺序,可以通过模拟栈的操作来验证。具体步骤如下:

  • 初始化一个栈。
  • 遍历弹出序列中的每个元素。
  • 对于每个弹出元素,检查栈顶是否等于该元素。
  • 如果栈顶元素等于当前弹出元素,弹出栈顶。
  • 如果栈顶元素不等于当前弹出元素,继续压栈处理后续的压入元素。
  • 如果在压栈过程中没有找到匹配的元素,返回false。
  • 处理完所有弹出元素后,返回true。
  • 以下是实现代码:

    public class ti31 {    public static boolean IsPopOrder(int push[], int pop[]) {        Stack
    stack = new Stack<>(); int i = 0; while (i < pop.length) { if (!stack.isEmpty() && stack.peek() == pop[i]) { stack.pop(); i++; } else if (i < push.length) { stack.push(push[i]); i++; } else { return false; } } return true; } public static void main(String[] args) { int push[] = {1,2,3,4,5}; int pop[] = {4,5,3,2,1}; System.out.println(IsPopOrder(push, pop)); }}

    代码解释:

    • 初始化栈stack
    • 遍历弹出序列pop中的每个元素pop[i]
    • 检查栈顶是否等于当前元素,如果是,弹出栈顶并继续处理下一个元素。
    • 如果栈顶不等于当前元素且还未处理完压入序列,继续压栈当前元素。
    • 如果没有找到匹配的元素且压入序列已处理完,返回false。
    • 处理完所有弹出元素后,返回true。
    上一篇:Leetcode--225. 用队列实现栈(Java)
    下一篇:被腾讯辞退的高级Android工程师现在怎么了?工作感悟

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2026年05月31日 08时35分20秒