21. 栈的压入、弹出序列

题目描述

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。

例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。

解题思路

使用一个栈来模拟压入弹出操作。

代码实现

public boolean IsPopOrder(int[] pushSequence, int[] popSequence) {
    int n = pushSequence.length;
    Stack<Integer> stack = new Stack<>();
    for (int pushIndex = 0, popIndex = 0; pushIndex < n; pushIndex++) {
        stack.push(pushSequence[pushIndex]);
        while (popIndex < n && !stack.isEmpty() 
                && stack.peek() == popSequence[popIndex]) {
            stack.pop();
            popIndex++;
        }
    }
    return stack.isEmpty();
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2018年12月13日 星期四 寒冬的夜晚总是早早就到来 路灯透过车窗 影子总是从后面移动到前面 然后消失不见 接...
    墨菲的世界阅读 442评论 0 1
  • 需要在应用内使用com.lampa.startapp等插件打开第三方的app是需要将第三方APP写进白名单的,否则...
    TT_拓泥阅读 1,716评论 1 0
  • 梦想花开读写人生第11天,还有89天 很多人都会谈到教育出现了很多问题,可是,我们的教育到底哪里出现了问题...
    牛志荣阅读 381评论 0 0
  • 今天是新年过后的第二天,在朋友圈才知道,今天也叫“迎婿日”。就是出嫁的姑娘要拖家带口的回娘家的日子。 今天我却没能...
    八七在路上阅读 490评论 0 6

友情链接更多精彩内容