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

栈的压入、弹出序列

http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106

import java.util.*;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        if(pushA.length == 0 || popA.length == 0 || pushA.length != popA.length)return false;
        Stack<Integer> help = new Stack<Integer>();
        int j = 0;//一开始就要初始化内循环的循环变量,后面要先用
        for(int i = 0;i < pushA.length;i++){
            help.push(pushA[i]);
            while(!help.isEmpty() && help.peek() == popA[j]){
                //这里注意逻辑的先后顺序,先保证辅助栈不为空在执行peek操作
                help.pop();//执行辅助栈的弹栈
                j++;//并且让j加一
            }
        }
        return help.isEmpty();
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务