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

栈的压入、弹出序列

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param pushV int整型一维数组
     * @param popV int整型一维数组
     * @return bool布尔型
     */
    public boolean IsPopOrder (int[] pushV, int[] popV) {
        Stack<Integer> st = new Stack<>();//辅助栈
        int p1 = 0, p2 = 0; //辅助指针
        while (p2 < popV.length) {
            // 辅助栈为空或者栈顶不等于要弹出的元素时从push栈中压入元素
            while (p1<pushV.length 
            &&(st.empty() || st.peek() != popV[p2])) {
                st.push(pushV[p1++]);                
            }            
            if (st.peek() == popV[p2]) {
                st.pop();
                p2 += 1;
            }else{//此时已没有元素可以压入栈,且辅助栈的栈顶不等于输出元素(不匹配)。
                return false;
            }
        }

        return true;
    }
}

全部评论

相关推荐

08-07 11:19
门头沟学院 Java
点赞 评论 收藏
分享
在研究求职打法的菠萝...:个人项目,我看是万人项目吧
点赞 评论 收藏
分享
昨天 13:54
门头沟学院 Java
被卡学历了简历挂,绷不住了...
去哪儿旅行呢:估计看你有字节实习也不会去
投递4399游戏等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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