题目
给定入栈顺序,判断一组数是否为出栈顺序
思路
最简单的想法,要判断出栈顺序,那就借用一个栈来判断,如果可以完全出栈,那就正确,不能就不行。
代码
//push为入栈顺序,pop为出栈顺序。
public boolean isPopOrder(int[] push, int[] pop){
if(push.length == 0){
return false;
}
int index = 0;//指向pop的元素下标
Stack<Integer> stack = new Stack<>();
for(int i=0; i<push.length; i++){
stack.push(push[i]);//把入栈顺序push推入栈
/*
出栈条件:
1.栈不为空
2.栈顶元素==出栈顺序
3.index小于pop的长度
*/
while(!stack.empty() && index<pop.length
&& stack.peek()==pop[index]){
stack.pop();
index++;
}
}
return stack.empty();
}