【华为OD机考真题】- 路灯照明(Java)

输入描述

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

第二行为 N 个空格分割的数,表示路灯的照明半径,1 <= 照明半径。

输出描述

无法照明的区间的长度和。

示例演示
示例1

输入:

复制代码
2
50 50

输出:

复制代码
0

示例2

输入:

复制代码
4
50 70 20 70

输出:

复制代码
20

示例说明: 50+70>100,70+20<100,20+70<100,所以有 两个未要盖的区间,总里程为 10+10=20。

注:这里需要注意照明半径大于100时,需要判断当前灯半径是否大于前一个灯半径-100,如果是大于则将当前灯半径传给下一个灯,如果小于则,将前一个灯半径-100传给下一个灯。

java 复制代码
package odTest;

import java.util.Arrays;
import java.util.Scanner;

public class lightQuestion {
	static int sum = 0;
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num = Integer.parseInt(scanner.nextLine());
		
		int[] lightCoverArea = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
		
		judgeUnCover(num,lightCoverArea,lightCoverArea[0],1);
		System.out.println(sum);
	}

	private static void judgeUnCover(int num, int[] lightCoverArea, int preVal,int index) {
		// TODO Auto-generated method stub
		if(index==num) {
			return;
		}
		if(preVal+lightCoverArea[index]<100) {
//			System.out.println(preVal);
			sum = sum+100-(preVal+lightCoverArea[index]);
//			System.out.println(sum);
		}
		
		//判断当前照明半径,传给下一个灯
		if(preVal<100&&lightCoverArea[index]<100) {
//			System.out.println(1);
			preVal=lightCoverArea[index];
		}else if(preVal>100&&lightCoverArea[index]+100<preVal) {
			preVal=preVal-100;
		}else if(preVal>100&&lightCoverArea[index]+100>preVal) {
			preVal=lightCoverArea[index];
		}else if(preVal<100&&lightCoverArea[index]>100) {
			preVal=lightCoverArea[index];
		}
		judgeUnCover(num,lightCoverArea,preVal,index+1);
	}

}
相关推荐
std78794 分钟前
超越编辑器:IntelliJ IDEA,如何成为Java开发的智慧引擎
java·编辑器·intellij-idea
Zz_waiting.14 分钟前
Spring 统一功能处理 - 拦截器与适配器
java·spring·拦截器·适配器·dispatcher
yinke小琪25 分钟前
凌晨2点,我删光了所有“精通多线程”的代码
java·后端·面试
珹洺1 小时前
Java-Spring入门指南(十一)代理模式与Spring AOP实战
java·spring·代理模式
JAVA学习通1 小时前
微服务项目->在线oj系统(Java-Spring)--增删改
java·开发语言·spring
道可到1 小时前
字节面试 Java 面试通关笔记 03| java 如何实现的动态加载(面试可复述版)
java·后端·面试
聪明的笨猪猪1 小时前
Spring Boot & Spring Cloud高频面试清单(含通俗理解+生活案例)
java·经验分享·笔记·面试
LoveXming1 小时前
Chapter9—享元模式
java·c++·设计模式·享元模式·开闭原则
聪明的笨猪猪1 小时前
Spring MVC高频面试清单(含通俗理解+生活案例)
java·经验分享·笔记·面试
失因2 小时前
Docker 容器与镜像
java·运维·spring cloud·docker·容器