美文网首页
面试题31:栈的压入、弹出序列

面试题31:栈的压入、弹出序列

作者: scott_alpha | 来源:发表于2019-10-07 17:26 被阅读0次

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
思路:把数据先按顺序一边存入辅助栈中,一边和弹出序列匹配,如果有匹配就从辅助栈中弹出。最终如果辅助栈为空,那就是匹配。
解决方案:

public class Question31 {
    public boolean isPopOrder(int[] push, int[] pop){
        if (push.length == 0 || pop.length == 0) return false;
        Stack<Integer> tmp = new Stack<Integer>();
        int popIndex = 0;
        for (int i=0; i<push.length; i++){
            tmp.push(push[i]);
            while (!tmp.isEmpty() && tmp.peek() == pop[popIndex]){
                tmp.pop();
                popIndex++;
            }
        }
        return tmp.isEmpty();
    }
}

相关文章

网友评论

      本文标题:面试题31:栈的压入、弹出序列

      本文链接:https://www.haomeiwen.com/subject/ysmmpctx.html