题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
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; } } }