目录
题目概述(中等难度)
思路与代码
思路展现
这里的思路就直接给大家贴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栈顶元素的话,可能会报空栈异常:如下所示:
总结
栈的题目总是会有一个辅助栈,这个思想是需要好好学习的