import java.util.ArrayList; public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { int sizeOfPushStack=pushA.length; ArrayList<Integer> auxiliaryList=new ArrayList<Integer>(); //判断边界条件 if(pushA==null||popA==null){ return false; } //开始扫描 //定义一个指针,指向输出序列的首部 int indexOfPopStack=0; for(int i=0;i<sizeOfPushStack;i++){ if(pushA[i]!=popA[indexOfPopStack]&&pushA!=null){ auxiliaryList.add(pushA[i]); }else{ indexOfPopStack++; } } //对比辅助栈的数据与序列indexOfPopStack开始的数据是否相等 for(int i=auxiliaryList.size()-1;i>=0;i--){ if(auxiliaryList.get(i)==popA[indexOfPopStack]){ auxiliaryList.remove(i); indexOfPopStack++; } } //辅助栈为空则表示成功 return auxiliaryList.isEmpty(); } }