写在前面
代码说明:代码的下载地址: https://github.com/WuNianLuoMeng/Coding
视频说明:第一次以这样的形式录视频,如果有哪里说的不对,还请各位及时指出,谢谢~
栈的压入,弹出序列 视频链接
方法一:对入栈序列进行入栈的模拟,然后在模拟的过程当中,判断栈顶元素和出栈序列的相等关系,从而判断出对栈顶元素的操作。
public boolean IsPopOrder(int [] pushA,int [] popA) {
Stack<Integer> stack = new Stack<>();
int pushIndex = 0; // 入栈序列的下标
int popIndex = 0; // 出栈序列的下标
while (pushIndex < pushA.length) {
if (!stack.isEmpty() && stack.peek() == popA[popIndex]) {
stack.pop();
popIndex++;
} else {
stack.push(pushA[pushIndex]);
pushIndex++;
}
}
// 下面的这个while循环其实就是为了防止当所有入栈的元素都压入栈的时候,栈顶元素和出栈序列的下标所指的数字没有来得及比较。
while (!stack.isEmpty()) {
if (stack.peek() == popA[popIndex]) {
stack.pop();
popIndex++;
} else {
return false;
}
}
return true;
} 
京公网安备 11010502036488号