解题思路
基本思路:
1、在把入栈数组的每一个节点顺序压入栈中
2、设置一个变量来记录弹栈队列的索引
3、在压栈时比较,栈顶元素与弹栈索引处的值是否一致,如果一致,说明该元素可以被弹出
4、如果栈为空,则说明队列正确,否则是错误的
小问题:
peek()只获取栈顶值,不弹出栈顶元素
栈来判断是否为空的函数为empty(),不是isEmpty()
代码
class Solution {
public boolean validateStackSequences(int[] pushed, int[] popped) {
Stack<Integer> s=new Stack<Integer>();
int j=0;//是poped数组的索引
for(int i=0;i<pushed.length;i++){//压入pushed的每一个点
s.push(pushed[i]);
while(!s.empty()&&s.peek()==popped[j]){//模拟栈操作,如果栈顶和poped数组的当前值一样,说明该
//压栈元素的弹出栈的顺序是可行的
s.pop();//弹出元素
j++;//索引向前
}
}
return s.empty();//如果为空,说明弹出队列正确,因为每一个元素的弹出栈的顺序都是可行的
}
}