分析:我们利用的是栈的性质,后进先出,也就是要保证出栈序列中的每个元素所在入栈序列位置之前的元素都在该元素出栈之后仍在将要出栈的序列中:
import java.util.ArrayList;
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
int index_push=pushA.length;
int index_pop=popA.length;
boolean flag=true;
boolean flag_p=false;
if((pushA !=null && popA !=null) && (index_push==index_pop)){
if(index_push==1){
//处理只有一个元素
if(pushA[0]==popA[0]){
return true;
}else{
return false;
}
}
for(int i=0;i<index_pop;i++){
int pop=popA[i];
//找到出栈元素在入栈中的位置
for(int j=0;j<index_push;j++){
if(pushA[j]==pop){
//找到位置j
if(j==0){
//判断压栈第一个元素是否是最后一个出栈元素
if(i !=index_pop-1){
flag=false;
break;
}
}else{
//找到出栈元素在入栈元素的位置j之后判断在j元素前面的入栈元素在出栈元素中是否存在
for(int k=j-1;k>=0;k--){
for(int l=i+1;l<index_pop;l++){
if(pushA[k]==popA[l]){
flag_p=true;
}
}
if(flag_p==true){
flag_p=false;
}else{
break;
}
}
}
}
}
if(!flag){
break;
}
}
if(flag==true){
return true;
}
}
return false;
}
}