剑指offer之 栈的压入、弹出序列

题目描述

给两个数组,第一个表示进栈顺序,第二个表示出栈顺序,问是否合法

解法

在每一次进栈的时候,都进行判断是否有出栈操作。维护一个队列,代表进栈的数,而判断成立的条件是,队列尾部的元素和出栈数组对应。那么删除队列尾部元素。最后判断队列是否为空。

 public boolean IsPopOrder(int [] pushA,int [] popA) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0, j = 0; i < pushA.length; i++) {
            list.add(pushA[i]);
            int len = list.size();
            while (len>0 && list.get(len - 1) == popA[j]) {
                list.remove(len - 1);
                j++;
                len = list.size();
            }
        }
        return list.isEmpty();
    }

猜你喜欢

转载自blog.csdn.net/qq_37591656/article/details/86624448