大家好,我是哪吒。
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。
三道中等难度题目,总分400分,前两道均为100分,后一道为200分,每道题的时间限制为1S(慎用暴力方法,实在没办法,也可!)。
机考分数是按照题目用例的通过数量的比例算分数,若有的题做不出来,可尽力去写,一些用例通过就有分数。
机考时长2个半小时,若以冲刺机考最高分为目的,则做题时间分配前两道题40分钟,最后一题70分钟(平时练习可以按照40分钟的时限)。
机考分数线根据招聘目标院校和非目标院校有不同,不同华为招聘部门也会有差异,比如前者机考通过线为150分,后者机考通过线为320分。
若以通过机考线为目的,根据自身情况来进行做题时长配置。
关于订阅华为OD机试真题的后续问题
在考试的时候,最好不要用CSDN专栏里的源码去答题,因为华为OD机试是有查重的,这个一定要注意!最好是改一改变量名称,加一加注释,改一改逻辑顺序,掌握答题思路才是关键,下面的题中我都加了详细的答题思路,代码中也有详细的注释说明,代码运行是100%正确无误的,每一题都有样例测试,全网独一份。
如果你刚刚参加完机试考试,欢迎提供真题到哪吒这里,直接红包转账收题。
很多考过的小伙伴,总结了宝贵的经验,多刷题,先易后难,前期积累自信,后期逐一突破,效果最佳。
在一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间间距固定为100米。
每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。
第一行为一个数N,表示路灯个数,1<=N<=100000。
第二行为N个空格分隔的数,表示路径的照明半径,1<=照明半径<=100000*100。
第一个路灯和最后一个路灯之间,无法照明的区间的长度和。
题目要求计算第一个路灯和最后一个路灯之间无法照明的区间的长度和。
例如:
3
20 70 30
路灯1 覆盖0-20
路灯2 覆盖30-170
路灯3 覆盖170-230
没被覆盖的区间只有20~30。
所以输出10。
但是,如果路灯的照明范围大于100,怎么办?
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int lightNum = sc.nextInt();
// 获取输入的灯数量
sc.nextLine();
// n个路灯的照明半径
List<Integer> allLightLength = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
// 每个灯的照明范围
List<List<Integer>> allResList = new ArrayList<>();
// 计算第一个灯和最后一个灯的距离
int maxRight = (lightNum - 1) * 100;
// 将每个灯的照明范围放入一个集合中
for (int i = 0; i < allLightLength.size(); i++) {
// 当前灯的照明范围,左起点,右终点
List<Integer> currentList = new ArrayList<>();
// 左起点,注意左边范围不要小于总范围的最小长度
Integer left = Math.max(0, i * 100 - allLightLength.get(i));
// 右终点,注意右边范围不要大于总范围的最大长度
Integer right = Math.min(maxRight, i * 100 + allLightLength.get(i));
currentList.add(left);
currentList.add(right);
allResList.add(currentList);
}
// 将每个灯的照明范围按照左起点进行升序排序
allResList = allResList.stream().sorted((list1, list2) -> {
Integer oneLeft = list1.get(0);
Integer twoLeft = list2.get(0);
// 先按左边最小距离排序
if (!oneLeft.equals(twoLeft)) {
return oneLeft - twoLeft;
}
// 如果左边距离相等的情况下 按照右边距离最小的排序
return list1.get(1) - list2.get(1);
}).collect(Collectors.toList());
int totalBlack = 0;
// 当前节点和下一个节点做比较
for (int i = 0; i < lightNum - 1; i++) {
List<Integer> currentList = allResList.get(i);
List<Integer> nextList = allResList.get(i + 1);
// 用当前节点的右边照明范围和下一个节点的左边照明范围比较
if (currentList.get(1) >= nextList.get(0)) {
// 大于的情况下 需要将下一个节点的右边距离取两个节点的最大值
nextList.set(1, Math.max(currentList.get(1), nextList.get(1)));
continue;
}
// 说明两个节点之间存在黑暗距离
int currentBlackLength = nextList.get(0) - currentList.get(1);
totalBlack += currentBlackLength;
}
System.out.println(totalBlack);
}
4
20 70 175 10
5
1、华为OD机试真题 Java 实现【二维伞的雨滴效应】【2023 B卷 100分】,附详细解题思路
2、华为OD机试真题 Java 实现【宜居星球改造计划】【2023 Q2 200分】,附详细解题思路
3、华为OD机试真题 Java 实现【IPv4地址转换成整数】【2023 B卷 100分】
4、华为OD机试真题 Java 实现【字符统计】【2023 B卷 100分】
5、华为OD机试真题 Java 实现【食堂供餐】【2023 B卷 考生抽中题】,附详细解题思路
6、华为OD机试真题(Java),跳跃游戏 II(100%通过+复盘思路)
7、华为OD机试真题 Java 实现【拼接URL】【2023 B卷 100分】,附详细解题思路
8、华为OD机试真题 Java 实现【找终点】【2023 B卷 100分】,附详细解题思路
9、华为OD机试真题 Java 实现【猴子爬山】【2023 B卷 100分】,附详细解题思路
10、华为OD机试真题 Java 实现【滑动窗口】【2023 B卷 100分】,附详细解题思路
本书从分布式系统的基础概念讲起,逐步深入分布式系统中间件Spring Cloud Alibaba进阶实战,重点介绍了使用Spring Cloud Alibaba框架整合各种分布式组件的完整过程,让读者不但可以系统地学习分布式中间件的相关知识, 而且还能对业务逻辑的分析思路、实际应用开发有更为深入的理解。
全书共分5大章节:
本书内容由浅入深、结构清晰、实例丰富、通俗易懂、实用性强,适合需要全方位学习Spring Cloud Alibaba相关技术的人员,也适合培训学校作为培训教材,还可作为大、中专院校相关专业的教学参考书。
高洪岩,某世界500强公司项目经理,有10年Java开发和项目管理经验,精通Java语言,擅长Java EE、分布式、微服务、高性能服务器架构、
智能报表、多线程和高并发相关的技术内容,理论与实践经验颇丰,也积极参与开源项目的开发与设计,涉及Dubbo、Jedis、Pulsar、ZooKeeper等主流开源项目。
著有《Java多线程编程核心技术》《Java并发编程:核心方法与框架》《NIO与Socket编程技术指南》《Java EE核心框架实战(第2版)》《Java Web实操》《虚拟化高性能NoSQL存储案例精粹:Redis+Docker》等多本图书。
https://item.jd.com/14010448.html