【华为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),查看当前专栏更新的所有题目。

相关推荐
2401_8414956413 小时前
【数据结构】基于Prim算法的最小生成树
java·数据结构·c++·python·算法·最小生成树·prim
木井巳14 小时前
[Java数据结构和算法] HashMap 和 HashSet
java·数据结构·1024程序员节
祈祷苍天赐我java之术15 小时前
解析常见的限流算法
java·数据结构·算法
摇滚侠15 小时前
IDEA 启动前端项目 IDEA 切换分支
java·ide·intellij-idea
元直数字电路验证15 小时前
Jakarta EE开发中,如何配置IntelliJ IDEA的远程调试?
java·eureka·intellij-idea
石头wang15 小时前
idea字体的问题(idea应用本身的字体问题)
java·ide·intellij-idea
孔明兴汉16 小时前
第一章-第三节-Java开发环境配置
java·开发语言
小王不爱笑13217 小时前
Java 核心知识点查漏补缺(一)
java·开发语言·python
空空kkk17 小时前
Java——类和对象
java·开发语言
JIngJaneIL17 小时前
篮球论坛|基于SprinBoot+vue的篮球论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·篮球论坛系统