算法1:
class Solution {
public boolean isPopOrder(int [] pushV,int [] popV) {
if(pushV==null||popV==null){
return false;
}
if(pushV.length==0&&popV.length==0){
return true;
}
if(pushV.length!=popV.length){
return false;
}
//每次出栈的都为栈顶元素,先将一个元素压入栈中,
//循环将栈顶元素与输出序列的元素对比,若相同,则为栈顶元素出栈,若不同则继续压栈进行对比
//出栈到最后的时候,栈应为空,否则,出栈序列有误
//在脑海中模拟出栈的方式
//从popv第0个元素进行对比
Stack<Integer>stack=new Stack<>();
int index=0;
for(int i=0;i<pushV.length;i++){
stack.push(pushV[i]);
while(!stack.isEmpty()&&stack.peek()==popV[index]){
stack.pop();
//角标后移,进行再次对比
index++;
}
}
return stack.isEmpty();
}
}