美文网首页
面试题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