【华为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+nums[i]]

如果当前路灯照射范围的起始值比上一个路灯照射范围的结尾值还要大,那么说明这一部分距离无法覆盖:当前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),查看当前专栏更新的所有题目。

相关推荐
Boilermaker19921 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维1 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_992 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子2 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34162 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
恋爱绝缘体12 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy18093 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
wszy18093 小时前
顶部标题栏的设计与实现:让用户知道自己在哪
java·python·react native·harmonyos
程序员小假4 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
资生算法程序员_畅想家_剑魔4 小时前
Kotlin常见技术分享-02-相对于Java 的核心优势-协程
java·开发语言·kotlin