用友 09.09 看大楼数量单调栈

    public static int[] findBuilding(int[] heights) {
        // write code here
        Stack<Integer> st = new Stack<>();
        Stack<Integer> st1 = new Stack<>();
        int[] left = new int[heights.length];
        int[] right = new int[heights.length];
        int[] res = new int[heights.length];
        Arrays.fill(res, 1);
        for (int i = 0; i < heights.length; i++) {
            while (!st.isEmpty() && heights[i] >= heights[st.peek()]) {
                Integer peek = st.peek();
                st.pop();
                left[peek] = st.size();
            }
            st.push(i);
        }
        for (int i = heights.length - 1; i >= 0; i--) {
            while (!st1.isEmpty() && heights[i] >= heights[st1.peek()]) {
                Integer peek = st1.peek();
                st1.pop();
                right[peek] = st1.size();
            }
            st1.push(i);
        }
        for (int i = 0; i < heights.length; i++) {
            if (i == 0) {
                res[i] += right[i + 1] + 1;
            } else if (i == heights.length - 1) {
                res[i] += left[i - 1] + 1;
            } else {
                res[i] += left[i - 1] + right[i + 1] + 2;
            }
        }
        return res;
    }

#用友##23届秋招笔面经#
全部评论
😭😭😭还是不太懂为什么实例里面27能看见4个楼顶,他不是最矮的被夹在中间啥也看不见吗
点赞 回复 分享
发布于 2022-09-09 21:41 陕西
最后一秒钟没有改好,就交卷了,真tm可惜
点赞 回复 分享
发布于 2022-09-09 21:05 湖北

相关推荐

合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:29
点赞 评论 收藏
分享
酷酷我灵儿帅:这去不去和线不线下面说实话没啥关系
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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