【华为OD题库-085】路灯照明II-Java

题目

在一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间间距固定为100米。

每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。输入描述

第一行为一个数N,表示路灯个数,1<=N<=100000

第二行为N个空格分隔的数,表示路灯的照明半径,1<=照明半径<=100000*100
输出描述

第一个路灯和最后一个路灯之间,无法照明的区间的长度和.
示例1:

输入

2

50 50

输出

0

说明

路灯1覆盖0-50,路灯2覆盖50-100,路灯1和路灯2之间(0米-100米)无未覆盖的区间。
示例2:

输入

4

50 70 20 70

输出

20

说明

路灯1覆盖0-50

路灯2覆盖30-170

路灯3覆盖180-220

路灯4覆盖230-370

170,180,220,230,两个未覆盖的区间,总里程为20

思路

简单逻辑分析题

每个路灯的坐标为:i*100,照射范围为:i\*100-nums\[i,i*100+numsi]

如果当前路灯照射范围的起始值比上一个路灯照射范围的结尾值还要大,那么说明这一部分距离无法覆盖:当前start-上一个end

最后累加未覆盖距离输出即可

题解

java 复制代码
package hwod;

import java.util.Scanner;

public class LampCoverageDistance {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = sc.nextInt();
        }
        System.out.println(lampCoverageDistance(nums));
    }

    private static int lampCoverageDistance(int[] nums) {
        int res = 0;
        int start = 0, end = 0;
        for (int i = 0; i < nums.length; i++) {
            if (i == 0) {
                end += nums[i];
            } else {
                start = i * 100 - nums[i];
                if (start > end) {
                    res += start - end;
                }
                end = i * 100 + nums[i];
            }
        }

        return res;
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

相关推荐
thefool11226630 分钟前
TCP 1
java·1024程序员节
金銀銅鐵3 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手3 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck5 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_32241428045 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑6 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔6 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节
yuniko-n6 小时前
【JUC】四种内存屏障示例
java·1024程序员节
念何架构之路7 小时前
Go reflect 包:结构体反射 —Field、Tag 与 VisibleFields
java·数据库·golang
liangbo78 小时前
03-JDK 10/11 局部变量推断与 LTS:var 到底该怎么用
java