题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
Java实现 用一个辅助栈来模拟
import java.util.*;
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
// 建议使用Deque来声明栈
Deque<Integer> stk = new ArrayDeque<>();
// 分别表示pushA和popA的下标
int m = 0, n = 0;
while(m < pushA.length) {
// 按照pushA的顺序压栈
stk.push(pushA[m++]);
// 每压入一个判断栈顶元素是否等于popA此时下标指向元素,若等于则将其出栈
while(!stk.isEmpty() && n < popA.length && stk.peek() == popA[n]){
stk.pop();
n++;
}
// 若此时popA已全部遍历完,说明顺序正确
if(n == popA.length) {
return true;
}
}
return false;
}
}

安克创新 Anker公司福利 659人发布