题目描述:

解题思路:
一开始想不到思路,看了题解总归想到了。首先,我们需要一个辅助栈,根据压栈序列不断压栈,但是在每次压栈的时候,我们就要根据出栈序列,如果出栈序列的元素和辅助栈的栈顶元素相等,就把他出栈。同时我们可以定义一个变量,定义出栈序列遍历到的位置。如果出栈序列是正确的,那么辅助栈最终会空,栈中元素会全部出栈。如果出栈序列不正确,那么辅助栈最终一定不为空。
代码实现:
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();
}
}
执行结果:

本文介绍了一种使用辅助栈验证给定的压栈和出栈序列是否有效的算法。通过不断压栈并比较辅助栈顶元素与出栈序列,实现序列的有效性判断。最终,若辅助栈为空,则说明序列有效。
172万+

被折叠的 条评论
为什么被折叠?



