典型的胡同问题,这里模拟栈的操作,可以用自己写的栈也可以用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;
}
}