题目描述
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
思路:使用一个辅助栈,按照顺序,栈顶为空或者栈顶元素和popA元素不相同的时候就把popA的数据进栈(记得要用while,所以要加判断条件j<n)
如果栈顶元素和popA元素相同的,就出栈
最后判断辅助栈是不是为空,如果不为空那就说明该出栈顺序是不正确的,如果为空就返回正确
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
int n=pushA.length;
Stack<Integer> s=new Stack<>();
int j=0;
//遍历popA
for(int i=0;i<n;i++){
//栈顶为空,或者栈顶元素和popA元素不相同的时候继续进栈
while((s.isEmpty()||s.peek()!=popA[i])&&j<n){
s.push(pushA[j]);
j++;
}
//如果栈顶元素和popA元素相同的时候
if(s.peek()==popA[i]){
s.pop();
}
}
if(s.isEmpty()){
return true;
}
return false;
}
}