题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pushV int整型一维数组
* @param popV int整型一维数组
* @return bool布尔型
*/
public boolean IsPopOrder (int[] pushV, int[] popV) {
// write code here
Stack s1 = new Stack();
int k = 0;
int i = 0;
//一直循环,直到入栈数组遍历完
while(true){
//如果栈为空或者辅助栈栈顶不等于出栈数组当前遍历元素时,一直把入栈数组当前元素入栈,指针后移
if(s1.isEmpty() || !s1.peek().equals(popV[k])){
//入栈前要判断下入栈数组是否已经遍历完成
if(i>=pushV.length){
break;
}
s1.push(pushV[i]);
i++;
}
//辅助栈栈顶元素等于出栈队列当前元素时,辅助栈出栈,出栈数组指针后移
else{
s1.pop();
k++;
}
}
//入栈数组遍历完后,如果辅助栈为空,说明所有元素成功出栈,匹配成功
if(s1.isEmpty()){
return true;
}else{
return false;
}
}
}