思路

  • 模拟栈的进与出
    用一个栈保存进栈数据,然后对比出栈数组的剩余数据是否与栈的出栈顺序相同

代码

import java.util.*;
public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
      Stack<Integer> stack=new Stack<>();
      int p=0;
        for(int i=0;i<pushA.length;i++){
            stack.push(pushA[i]);
            while(!stack.isEmpty() &&stack.peek()==popA[p]){
                p++;
                stack.pop();
            }
        }
        for(int i=p;i<popA.length;i++){
            if(stack.isEmpty()|| popA[i]!=stack.pop()){
                return false;
            }
        }
      return true;
    }
}