题目描述:
解题思路:
一开始想不到思路,看了题解总归想到了。首先,我们需要一个辅助栈,根据压栈序列不断压栈,但是在每次压栈的时候,我们就要根据出栈序列,如果出栈序列的元素和辅助栈的栈顶元素相等,就把他出栈。同时我们可以定义一个变量,定义出栈序列遍历到的位置。如果出栈序列是正确的,那么辅助栈最终会空,栈中元素会全部出栈。如果出栈序列不正确,那么辅助栈最终一定不为空。
代码实现:
class Solution {
public boolean validateStackSequences(int[] pushed, int[] popped) {
Stack<Integer> stack = new Stack<>();
int i = 0;
for(int num : pushed) {
stack.push(num);
while(!stack.isEmpty() && stack.peek() == popped[i]) {
stack.pop();
i++;
}
}
return stack.isEmpty();
}
}
执行结果: