剑指Offer—栈的压入、弹出序列
题目
解题思路:新建一个栈模拟栈的压入弹出过程
/**
* 新建一个栈模拟压栈和弹出过程
* @param pushA
* @param popA
* @return
*/
public boolean IsPopOrder(int [] pushA,int [] popA) {
//建立一个辅助栈来模拟压栈的过程
Stack<Integer> stack = new Stack<>();
//获取压栈数组的长度
int n = pushA.length;
//定义一个变量 指向弹出序列
int m = 0;
//模拟压栈的过程
for (int i = 0; i < n; i++) {
stack.push(pushA[i]);
//压入栈的元素和弹出序列进行匹配
while (m<popA.length&&stack.peek()==popA[m]){
//匹配成功 弹出栈元素
stack.pop();
//指针后移
m++;
}
}
//栈为空则匹配成功 否则匹配失败
return stack.isEmpty();
}