题目概述(中等难度)
思路与代码
思路展现
这里的思路就直接给大家贴K神的思路了,K神永远的神,代码可以看我的:
戳我戳我
代码示例
class Solution {
public boolean validateStackSequences(int[] pushed, int[] popped) {
//定义一个辅助栈
Stack<Integer> stack = new Stack<>();
int i = 0;
int j = 0;
while(j < pushed.length) {
stack.push(pushed[j]);
while(!stack.isEmpty()&&stack.peek() == popped[i]) {
stack.pop();
i++;
}
j++;
}
return stack.isEmpty();
}
}
注意事项
注意一下这个while循环:
while(!stack.isEmpty()&&stack.peek() == popped[i])
为什么这个isEmpty方法要在peek方法的前面,原因是当我们stack中的元素删除完毕后,此时如果先拿stack栈顶元素的话,可能会报空栈异常:如下所示:
总结
栈的题目总是会有一个辅助栈,这个思想是需要好好学习的