这个题目的话,我们的思路就是先将元素入栈,直到遇到出栈序列中的元素,那么此时我们就将满足的元素不停的出栈,最后判断栈是否为空即可。
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
Stack<Integer> stack = new Stack<>();
int index1 = 0, index2 = 0;
for(; index1 < pushA.length; ++index1) {
stack.push(pushA[index1]); //每次都将一个元素入栈
//如果当前栈顶出现在了出栈顺序中,则出栈并更改出栈元素的下标
while(index2 < popA.length && stack.peek() == popA[index2]) {
index2++;
stack.pop();
}
}
//如果栈内没有元素了,则可以
return stack.isEmpty();
}
}