Skip to content

Latest commit

 

History

History
29 lines (25 loc) · 1.09 KB

JZ21_栈的压入、弹出序列.md

File metadata and controls

29 lines (25 loc) · 1.09 KB

JZ21_栈的压入、弹出序列

典型的胡同问题,这里模拟栈的操作,可以用自己写的栈也可以用Stack类,对于入栈序列,每次入栈,都对已经在栈内的元素从栈顶开始和出栈队列匹配,如果一直匹配,则出栈序列不断向后移动,栈内元素不断出栈,一旦不同,就停止,继续入栈,重复上述操作,建议动笔模拟~更为清晰

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        Stack<Integer> stack = new Stack<>();
        int cnt = 0;
        for (int i = 0; i < pushA.length; i++) {
            stack.push(pushA[i]);
            while (true) {
                //这里注意要加一个判断栈是否为空的判断哦
                if (!stack.empty() && stack.peek() == popA[cnt]) {
                    stack.pop();
                    cnt++;
                } else
                    break;
            }
        }
        if (cnt == pushA.length && stack.empty()) return true;
        else return false;
    }
}