剑指Offer第二十一题:栈的压入、弹出序列
这个题思路就是创建一个栈来模拟压栈和出栈的操作
- 将压栈数组逐个压栈,使用一个索引来记录当前出栈序列的位置,当出现栈顶元素和出栈数组当前数相等时,说明需要出栈操作,进行出栈,因为可能在一次压栈之后会有多个出栈,因为要用while循环来出栈
import java.util.*;
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
if (pushA == null || popA == null){
return false;
}
if(pushA.length != popA.length){
return false;
}
Stack<Integer> stack = new Stack<>();
int index = 0;
for(int i = 0; i<pushA.length; i++){
//将入栈列表的元素压栈一位
stack.push(pushA[i]);
//如果与出栈列表元素相同,则出栈
while(!stack.isEmpty() && stack.peek() == popA[index]){
stack.pop();
index++;
}
//否则继续入栈
}
return stack.isEmpty();
}
}