【华为机试真题Java】求符合要求的结对方式

  写在前面


        本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题。大家有什么不懂的都可以留言。


       华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为400分,150分钟考试时间。之前通过为150分,现在好像分数提高了,大家不要太大意,一定要多刷题,争取拿高分,毕竟分数越高评级越高,工资也就越高。OD的工资待遇还是很可观的15K-30K*14-16,希望大家努力(肺腑之言)

所有真题导读清单:

【华为机试真题Python】从入门到入职-真题列表导读_敏感字段加密 python-优快云博客

题目描述

用一个数组A代表

### 华为 Java 真题及相关练习 华为OD对于编程语言的选择并没有严格限制,但基于大多数应聘者的实际情况和技术背景,Java 被认为是一个相对合适的选择[^1]。以下是关于华为中的 Java 真题以及相关练习的内容。 #### 一、真题分类 根据已有的资料整理,华为OD的题目通常分为以下几个类别: - **字符串处理** - **数组操作** - **动态规划** - **贪心算法** - **图论** 这些类型的题目覆盖了计算科学的基础知识点,并且考察的是实际解决问题的能力而非单纯的理论记忆。 #### 二、经典真题解析——“2022Q4 路灯照明问题” 这是一道典型的华为OD题,难度较高,能够很好地反映其考查重点。 ##### 题目描述 给定一条街道上的若干盏路灯及其对应的亮度范围,最少需要开启多少盏路灯才能照亮整条街。 ##### 输入描述 输入包含多组测数据,每组测数据的第一行为两个正整数 N 和 L (N ≤ 1e5, L ≤ 1e9),分别表示路灯的数量和街道长度;接下来的一行有 N 对整数 ai bi (-L/2 ≤ ai ≤ L/2, 0 < bi ≤ L),其中 ai 表示第 i 盏路灯的位置坐标,bi 表示该路灯能照射的最大距离。 ##### 输出描述 输出一个整数,即满足条件所需的最小路灯数量。 ##### 解题思路 此问题可以通过贪心策略解决。具体来说,先按照路灯位置排序,然后依次选取当前未被覆盖区域中最优的一个路灯进行点亮,直到整个区间都被完全覆盖为止[^2]。 ##### Java 实现代码 以下提供了上述问题的一种可能实现方式: ```java import java.util.*; public class StreetLight { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 路灯数目 long l = scanner.nextLong(); // 街道总长 List<int[]> lights = new ArrayList<>(); for(int i=0;i<n;i++) { int a = scanner.nextInt(); int b = scanner.nextInt(); lights.add(new int[]{a,b}); } Collections.sort(lights,(o1,o2)->{ if(o1[0]!=o2[0]) return o1[0]-o2[0]; else return o1[1]-o2[1]; }); long start = -l / 2; long end = -l / 2; int count = 0; int index = 0; while(end<l/2){ long maxEnd=-l/2; boolean flag=false; while(index<lights.size() && lights.get(index)[0]<=end+lights.get(index)[1]){ if(start<=lights.get(index)[0]-(long)lights.get(index)[1]){ maxEnd=Math.max(maxEnd,lights.get(index)[0]+(long)lights.get(index)[1]); flag=true; } index++; } if(!flag){ System.out.println(-1);return ; }else{ count++; end=maxEnd; } } System.out.println(count); } } ``` 以上代码实现了通过贪心法计算所需最少路灯数量的功能[^2]。 #### 三、其他推荐练习题 除了上述提到的经典题外,还可以尝以下几种常见类型的问题作为额外训练材料: 1. 字符串匹配与替换; 2. 数组旋转或翻转; 3. 最短路径寻找; 4. 排序算法优化实践等。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forest_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值