写起来总感觉有点怪怪的。
建一个栈,每个循环压进去一个数,再判断栈顶数据是否为popA数列需要的数字,一直循环
import java.util.*; public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { if(pushA.length<0||popA.length<0||pushA.length!=popA.length)return false; if(pushA==null||popA==null){ if(pushA==null&&popA==null)return true; else return false; } int i=0; int j=0; Stack<Integer> stack = new Stack<>(); while(j<popA.length&&i<pushA.length){ stack.push(pushA[i]); i++; while(!stack.empty()&&stack.peek()==popA[j]&&j<popA.length){ stack.pop(); j++; } } return (i==pushA.length&&stack.empty()&&j==popA.length); } }