题目
分析
这题需要我们通过两个数组,模拟出一个入栈和出栈的过程。第一个数组告诉了我们入栈的顺序,第二个数组告诉了我们出栈的顺序,我们需要证明这种方式是否可行。此题需要一个辅助栈。
过程:先压入数组的第一个元素,然后去和弹栈序列的第一个值比对,相等则说明这个值需要弹出,那么就把它pop,然后弹栈序列的指针指向下一个值,如果不满足条件,可以继续压栈,直到满足出栈条件。最终判断是否合理,只要看辅助栈中有没有值即可,如果为空,那序列是合理的。
代码
这里需要划重点的或许是这个:import java.util.*;如果没有这个语句,则会报错找不到symbol,在牛客网中的题都是需要手动导包的,如下方式可以导入util工具中的所有类。
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 (stack.isEmpty() == false && popA[j] == stack.peek()) {
stack.pop();
j++;
}
}
return stack.isEmpty();
}
}