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

news/2024/7/20 16:58:26 标签: 华为od, 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),查看当前专栏更新的所有题目。


http://www.niftyadmin.cn/n/5246327.html

相关文章

【前端设计模式】之装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许在不改变原有对象结构的情况下&#xff0c;动态地给对象添加额外的功能。装饰模式通过创建一个包装器&#xff08;装饰器&#xff09;来包裹原有对象&#xff0c;并在保持接口一致性…

ubuntu apt指令集学习心得

ubuntu apt指令集学习心得 在Ubuntu中&#xff0c;我们可以使用以下apt指令集来管理软件包&#xff1a; 1. 更新软件包列表&#xff1a; sudo apt update 2. 升级已安装的软件包&#xff08;将系统中的所有软件包升级到最新版本&#xff09;&#xff1a; s…

Serial for Mac:Macos 电脑全功能串行终端管理软件

随着科技的飞速发展&#xff0c;串行通信在各个领域的应用越来越广泛。从硬件调试到数据传输&#xff0c;串行通信在很大程度上决定了设备的性能和稳定性。在这个背景下&#xff0c;一款全面而高效的串行终端管理软件显得尤为重要。而Serial for Mac正是这样一款备受推崇的软件…

图表管理功能(前后端实现增删改查)

图表管理功能&#xff08;前后端实现增删改查&#xff09; 后端 库表设计 create table chart (id bigint auto_increment comment idprimary key,goal text null comment 分析目标,chartData text …

Java代理转发URL流

工具类 URLProxyUtil import org.apache.http.*; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.AbortableHttpRequest; import org.apache.http.client.utils.URIUtils; import org.apache.http.entity.InputStreamEntity; import org.a…

【开放集检测OSR】开放集检测和闭集检测的区别和联系:从模型角度进行理解

定义一个分类器&#xff1a; D t r a i n { ( x i , y i ) } i 1 N ⊂ X C D_{train} \{(x_i, y_i)\}^N _{i1} ⊂ X C Dtrain​{(xi​,yi​)}i1N​⊂XC X&#xff1a;输入空间 ( x i , y i ) (x_i, y_i) (xi​,yi​): 输入的图像x以及其对象的类别标签yC &#xff1a;已知…

ChatGPT 应用开发(一)ChatGPT OpenAI API 免代理调用方式(通过 Cloudflare 的 AI Gateway)

前言 开发 ChatGPT 应用&#xff0c;我觉得最前置的点就是能使用 ChatGPT API 接口。首先我自己要能成功访问&#xff0c;这没问题&#xff0c;会魔法就可以本地调用。 那用户如何调用到我的应用 API 呢&#xff0c;我的理解是通过用户能访问到的中转服务器向 OpenAI 发起访问…

uni-app 微信小程序之好看的ui登录页面(一)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面&#xff08;一&#xff09; uni-app 微信小程序之好看的ui登录页面&#xff08;二&#xff09; uni-app 微信小程序之好看的ui登录页面&#xff08;三&#xff09; uni-app 微信小程…