题解 | #愤怒的小鸟#

愤怒的小鸟

https://www.nowcoder.com/practice/597c32f0b3cf43beb1d01e7ddd87cc32

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int h[]=new int[n];
        for(int i=0;i<n;i++){
            h[i]=in.nextInt();
        }
        Stack<Integer> stack=new Stack<>();
        stack.push(0);
        int res[]=new int[n];
        //从左到右找能炸自己的山的数量
        for(int i=1;i<n;i++){
            while(!stack.isEmpty()&&h[i]>h[stack.peek()]){
                stack.pop();
            }
            if(!stack.isEmpty())
                res[i]+=stack.size();
            stack.push(i);
        }
        //从右到左找能炸自己的山的数量
        stack.clear();
        stack.push(n-1);
        for(int i=n-2;i>=0;i--){
            while(!stack.isEmpty()&&h[i]>h[stack.peek()]){
                stack.pop();
            }
            if(!stack.isEmpty())
                res[i]+=stack.size();
            stack.push(i);
        }
        for(int i=0;i<n;i++){
            res[i]=n-1-res[i];
        }
        for(int i=0;i<n;i++){
            System.out.print(res[i]+" ");
        }

    }
}

不要正向找安全点,先找非安全点,然后用n-1减去非安全点数。

开始想的是找安全点,结果写到后面发现需要考虑好多好多情况……属实想不全所有情况,所以反向考虑了。

#23届找工作求助阵地##单调栈结构#
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 12:19
点赞 评论 收藏
分享
暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务