题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

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;
    }
}
全部评论

相关推荐

酷酷的喜马拉雅山:感觉这比一直在初筛不动的好多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务