新建一个栈,将数组A压入栈中,当栈顶元素不相等时说明他不是立马出栈,就先将它入栈,当栈顶元素等于数组B时,就将其出栈,当循环结束时,判断栈是否为空,若为空则返回true.
public boolean IsPopOrder(int [] pushA,int [] popA) {
if (popA.length == 0 || pushA.length == 0 || popA.length!=pushA.length) {
return false;
}
Stack<Integer> stack = new Stack<>();
int j = 0;
for (int i = 0;i<pushA.length;i++) {
stack.push(pushA[i]);
while (!stack.empty()&&stack.peek() == popA[j]) {
stack.pop();
j++;
}
}
return stack.empty();
}