首页 > 其他分享 >【OD真题】补种未成活胡杨[100分]

【OD真题】补种未成活胡杨[100分]

时间:2024-05-26 14:59:37浏览次数:20  
标签:补种 replantPoplar 真题 int max OD dead 胡杨 100

一、题目描述

        近些年来,我国防沙治沙取得显著成果。某沙漠新种植 N 棵胡杨(编号 1-N),排成一排。一个月后,有 M 棵胡杨未能成活。现可补种胡杨 K 棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?

二、输入描述

N 总种植数量
M 未成活胡杨数量
M 个空格分隔的数,按编号从小到大排列
K 最多可以补种的数量

其中:
1 <= N <= 100000
1 <= M <= N
0 <= K <= M

三、输出描述

3.1 示例 1

  • 输入

5
2
2 4
1

  • 输出

3

说明
补种到 2 或 4 结果一样,最多的连续胡杨棵树都是 3。

3.2 示例 2

  • 输入

10
3
2 4 7
1

  • 输出

6

说明
补种第 7 棵树,最多的连续胡杨棵树为 6(5,6,7,8,9,10)。

四、代码实现

4.1 方案一

    public int replantPoplar(int n, int m, String l, int k) {
        String[] deadArr = l.split(" ");
        int[] dead = Arrays.stream(deadArr).mapToInt(Integer::parseInt).toArray();
        int max = 0;
        for (int i = k - 1; i < m; i++) {
            // i为补种的最后一棵胡杨下标
            if (i == k - 1) {
                // 种最前面的k棵树
                max = Math.max(max, dead[k] - 1);
            } else if (i == m - 1) {
                // 种最后面的k棵树
                max = Math.max(max, n - dead[i - k]);
            } else {
                // 种中间的k棵树
                max = Math.max(max, dead[i + 1] - dead[i - k] - 1);
            }
        }
        return max;
    }

五、测试

    @Test
    void replantPoplar() {
        int max = day09.replantPoplar(5, 2, "2 4", 1);
        Assertions.assertEquals(3, max);

        max = day09.replantPoplar(10, 3, "2 4 7", 1);
        Assertions.assertEquals(6, max);
    }

标签:补种,replantPoplar,真题,int,max,OD,dead,胡杨,100
From: https://blog.csdn.net/yyp0719/article/details/139214950

相关文章

  • CCF-GESP 等级考试 2024年3月认证C++一级真题解析
    2024年03月真题1单选题第1题C++表达式(3-2)*3+5的值是()。A.-13B.8C.2D.0正确答案:B.8解析:首先计算括号中的表达式(3-2),得到(1)。接下来进行乘法运算(1*3),得到(3)。最后进行加法运算(3+5),得到(8)。因此,表达式的值是(8)。第2题C++......
  • CCF-GESP 等级考试 2024年3月认证C++一级真题
    2024年03月真题1单选题第1题C++表达式(3-2)*3+5的值是()。A.-13B.8C.2D.0第2题C++语句cout<<"5%2="<<5%2执行后的输出是()。A.22B.11C.5%2=2D.5%2=1第3题执行C++语句cin>>a时如果输入5+2,下述说法正确的是()。A.变量a将被......
  • 24.2.13 ~ 4.13 Codeforces Round 925 & 926 & 934 & 939 (Div.3 / Div.2 * 3)
    925Div.3Solve:A~G(7/7)Rank:95Rating:\(0+706=706\)(\(1400+206=1606\))发挥评价:Normal+本场没什么有价值题目。926Div.2Solve:A~DF(5/6)Rank:72Rating:\(706+575=1281\)(\(1606+225=1831\))发挥评价:Good本场没有什么失误。CF1929E*2300(me*2300)选......
  • 华为OD机试Java - 会议室占用时间
    前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述现有若干个会议,所有会议共享一......
  • 华为OD机试Java - 智能成绩表
    前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述小明来到某学校当老师,需要将学......
  • [LeetCode] 2903. Find Indices With Index and Value Difference I
    Youaregivena0-indexedintegerarraynumshavinglengthn,anintegerindexDifference,andanintegervalueDifference.Yourtaskistofindtwoindicesiandj,bothintherange[0,n-1],thatsatisfythefollowingconditions:abs(i-j)>=index......
  • Codeforces Round 947 (Div. 1 + Div. 2)
    Solve:A~ERank:425Rating:\(1744+195=1939\)(\(1894+95=1989\))发挥评价:Normal本场问题:E先WAon4,较快找出问题后修改WAon27,就又急了(重现上午),开始怀疑做法正确性未果,结果1h后才发现是代码出现问题。注意先检查代码漏洞而不是先怀疑正确性(尤其是错在后面时候,要是正......
  • 视频号创作者分成5.0,最新方法,条条爆款,简单无脑,单日变现1000+
    福利来了,微信视频号分成计划正式推出啦!这是微信平台为鼓励优质原创内容创作而推出的一项激励机制。通过这个计划,内容创作者可以通过发布原创视频,吸引用户观看并在评论区互动,从而获得广告分成收益。这种模式类似于公众号的文字内容变现,但视频号专注于视频内容。这意味着,只要......
  • 使用树梅派搭建Golang、Python、NodeJs的开发服务器
    使用树梅派搭建Golang、Python、NodeJs的开发服务器安装系统安装rpi-imagersudoaptinstallrpi-imager打开rpi-imager烧写RaspberryPiOSLite(64-bit)系统设置好用户名、密码、wifi、ssh等信息上电修改镜像源备份/etc/apt/sources.listsudocp/etc/apt......
  • 【ArcGIS微课1000例】0112:沿线(面)按距离或百分比生成点
    文章目录一、沿线生成点工具介绍二、线状案例三、面状案例一、沿线生成点工具介绍位置:工具箱→数据管理工具→采样→沿线生成点摘要:沿线或面以固定间隔或百分比创建点要素。用法:输入要素的属性将保留在输出要素类中。向输出要素类添加新字段ORIG_FID,并设置为......