【华为OD考试真题】路灯覆盖问题【Python版】

这篇博客介绍了华为OD考试中的一道真题,涉及一条公路上的路灯覆盖问题。问题要求计算第一个和最后一个路灯之间未被照明的区间长度和。题目给出了输入输出描述以及示例,并提供了分析与Python代码解答,代码的时间复杂度和空间复杂度均为O(n)。
摘要由CSDN通过智能技术生成


题目

标题:【华为OD考试真题】【Python版】
分值: 200 ’

一、题目正文

一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间的距离是100m。每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,未照明区间的长度和。
输入描述:
第一行为一个数N,表示灯的个数,[1, 100000]
第二行为N个","分隔的数,表示路灯的照明半径,[1, 100*100000]
输出描述:
第一个路灯和最后一个路灯之间,未照明区间的长度和
举例:
输入:
8
10,10 ,10 ,10 ,10 ,10 ,10 ,10
输出:
560
输入:
6
50,20,60,120,30,230
输出:
50


参考题解

一、分析

这道题原来是考察区间的合并,但其实有简单解法:把路灯照亮 的地面具体化为(n-1)*100个0的列表,然后遍历我们每个路灯,将路灯能照到的范围内的0置位1,最后输出0的数量

二、代码

时间复杂度:O(n)
空间复杂度:O(n)


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值