剑指Offer—栈的压入、弹出序列

剑指Offer—栈的压入、弹出序列

题目

解题思路:新建一个栈模拟栈的压入弹出过程

/**
 * 新建一个栈模拟压栈和弹出过程
 * @param pushA
 * @param popA
 * @return
 */
public boolean IsPopOrder(int [] pushA,int [] popA) {
    //建立一个辅助栈来模拟压栈的过程
    Stack<Integer> stack = new Stack<>();
    //获取压栈数组的长度
    int n = pushA.length;
    //定义一个变量 指向弹出序列
    int m = 0;
    //模拟压栈的过程
    for (int i = 0; i < n; i++) {
        stack.push(pushA[i]);
        //压入栈的元素和弹出序列进行匹配
        while (m<popA.length&&stack.peek()==popA[m]){
            //匹配成功 弹出栈元素
            stack.pop();
            //指针后移
            m++;
        }
    }
    //栈为空则匹配成功 否则匹配失败
    return stack.isEmpty();
}

猜你喜欢

转载自blog.csdn.net/hnuwyd/article/details/80183374