写在前面
代码说明:代码的下载地址: 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; }