问题描述
题目分析
i往后走
此时栈顶和J下标的值一样
一样之后出栈顶的值,J++
现在J下标的值是5,和栈顶的值不一样,此时i继续++
此时栈顶的元素又和J一样,栈顶弹出,J++
此时继续弹出,J++
此时发现J遍历完了popA数组,并且栈也是空的,说明pushA和popA匹配,返回true
完整代码
import java.util.*; public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { Stack<Integer> stack = new Stack<>(); int j = 0; for(int i = 0; i < pushA.length; i++){ stack.push(pushA[i]); while(j < popA.length && !stack.empty()&&stack.peek() == popA[j]){ stack.pop(); j++; } } return stack.empty(); } }