思路来自于:【LeetCode力扣刷题 | 剑指Offer 31. 栈的压入、弹出序列-哔哩哔哩】 https://b23.tv/mvsIvAi
import java.util.Stack;
class Solution {
//思路:模拟一个栈进行相应的弹出操作
public boolean validateStackSequences(int[] pushed, int[] popped) {
//空的情况
if(pushed.length==0)return true;
//设置变量puindex为入栈索引,poindex为出栈的索引
int puindex=0,poindex=0;
//创建一个栈的对象
Stack<Integer> stack = new Stack<Integer>();
//添加栈顶
stack.push(pushed[puindex]);
puindex++;
//while poindex>0,继续操作(结束条件一:正常结束,符合条件)
while(poindex<popped.length){
if(stack.isEmpty()){
stack.push(pushed[puindex]);
puindex++;
}
//此时栈顶的元素是否等于当前popped[poindex]
//等于:出栈,poindexx++
if(stack.peek()==popped[poindex]){
stack.pop();
poindex++;
}
//不等于:查看当前puindex是否大于pushed.length
else{
//大于pushed.length return false (结束条件二:异常结束,中间有数字不符合)
if(puindex>=pushed.length){
return false;
}
//小于pushed.length 进栈 puindex++;
else{
stack.push(pushed[puindex]);
puindex++;
}
}
//while结束
}
//return true
return true;
}
}