华为OD【2025最新热题】机试真题刷题笔记
文章平均质量分 73
2025 年 9 月 华为 OD 机试全面切换为双机位 A 卷后,无数考生陷入两大困境:旧题库失效、新题型无从下手。这份刷题笔记基于近 300 份考场反馈打磨而成
南山马客
华为OD机考刷题笔试持续更新、最新最全最快
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(100分)- 勾股数元组(Java & JS & Python)华为OD
为了探索勾股数的规律,我们定义如果勾股数(a,b,c)之间两两互质(即a与b,a与c,b与c之间均互质,没有公约数),则其为勾股数元组(例如(3,4,5)是勾股数元组,(6,8,10)则不是勾股数元组)。[1,20]范围内勾股数有:(3 4 5),(5 12 13),(6 8 10),(8 15 17),(9 12 15),(12 16 20);如果3个正整数(a,b,c)满足a^2 + b^2 = c^2的关系,则称(a,b,c)为勾股数(著名的勾三股四弦五),结束范围M,N < M <= 10000。原创 2025-11-24 20:48:14 · 576 阅读 · 0 评论 -
(100分)- 工号不够用了怎么办?(Java & JS & Python & C)华为OD
小写字母有26种,数字有10种,因此如果工号组合选择一个字母,一个数字的话,则有26 * 10 = 260种。如果选择两个字母,两个数字的话,则会产生 26^2 * 10^2 种工号。现在确定了需要的工号总个数x,以及字母个数y,也就是说。这里我们要保证z向上取整,且保证z最小取1。这题应该就是一道数学问题。求最小的z,且z>=1。原创 2025-11-24 20:46:27 · 185 阅读 · 0 评论 -
(200分)- 编码能力提升计划(Java & JS & Python & C)华为OD
这里,可能有人会有疑问,我们如果看time[5]答案,那么总耗时17 - 4 = 13,也可以不超时呀。为了提升软件编码能力,小王制定了刷题计划,他选了题库中的n道题,编号从0到n-1,并计划在m天内按照题目编号顺序刷完所有的题目(注意,小王不能用多天完成同一题)。很简单,我们应该将这次宝贵的机会用在看耗时最长的题目上,而这些题目中耗时最长的是time[4],因此我们看time[4]题目的答案,总耗时17 - 5 = 12。另外,在每天花费T时间做题的情况下,要在m天中做完所有题目。原创 2025-11-24 20:45:11 · 501 阅读 · 0 评论 -
(100分)- 乱序整数序列两数之和绝对值最小(Java & JS & Python)华为OD
一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 [-65535, 65535]。给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个数,其和的绝对值(每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。首先将nums数组升序,nums数组长度为n。本题数量级不大,可以考虑暴力破解。两数之和绝对值最小值。原创 2025-11-24 20:43:55 · 282 阅读 · 0 评论 -
(B卷,100分)- 分苹果(Java & JS & Python & C)HUAWEI OD
A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。1 <= 每个苹果重量 <= 10000。1 <= 总苹果数量 <= 20000。输入第二行是每个苹果重量:3 5 6。输出第一行是B获取的苹果总重量:11。输入第一行是苹果数量:3。原创 2025-11-24 20:42:46 · 113 阅读 · 0 评论 -
(B卷,100分)- 分割数组的最大差值(Java & JS & Python & C)华为OD
给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值,计算这两个值的差值,请输出所有分割方案中,差值最大的值。左数组 = [1,-2,3,4,-9] 且 右数组 = [7],和的差值 = | -3 - 7| = 10最大的差值为10。左数组 = [1,-2,3,4] 且右数组=[-9,7],和的差值 = | 6 - (-2) | = 8,定义一个rightSum,用于统计右数组的和,初始为sum(nums)原创 2025-11-23 21:14:14 · 140 阅读 · 0 评论 -
(B卷,100分)- 分班(Java & JS & Python)华为OD
然后遍历排队的小朋友,被遍历的小朋友为kid,然后kid的标志如果是Y,则表示和前面一个小朋友同班,否则不同班。幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友同班,请你帮忙把同班的小朋友找出来。定义一个标志preBelongToOne,记录前一个小朋友是否属于一班,初始时为false,表示不属于一班。比如:6/N 2/Y 3/N 4/Y,表示4位小朋友,2和6同班,3和2不同班,4和3同班。小朋友的编号是整数,与前一位小朋友同班用Y表示,不同班用N表示。原创 2025-11-23 21:13:25 · 367 阅读 · 0 评论 -
(B卷,100分)- 磁盘容量排序(Java & JS & Python)华为OD
注意单位可以重复出现,上述3M12G9M表示的容量即为3M+12G+9M,和12M12G相等。其中m表示容量大小,v表示容量单位,例如20M,1T,30G,10G6T,3M12G9M。容量单位v的范围只包含题目中提到的M,G,T三种,换算关系如题目描述。例如给定5块盘的容量,1T,20M,3G,10G6T,3M12G9M。它们之间的换算关系为1T = 1024G,1G = 1024M,排序后的结果为20M,3G,3M12G9M,1T,10G6T。磁盘的容量单位常用的有M,G,T这三个等级,原创 2025-11-23 21:12:12 · 112 阅读 · 0 评论 -
(B卷,100分)- 报文重排序(Java & JS & Python & C)华为OD
对报文进行重传和重排序是常用的可靠性机制,重传缓中区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文。输出恢复出的原始报文,按照每个子报文的顺序的升序排序恢复出原始报文,顺序后缀需要从恢复出的报文中删除掉。这题解析“字符审报文内容”、"后缀顺序索引"时,我使用了正则匹配的捕获组。本题需要考虑下后缀顺序索引不连续的情况,即不是严格的0~N-1序号。字符串报文内容由[a-z,A-Z]组成,后缀为整型值,表示顺序。输入第一行为N,表示子报文的个数,0 <N ≤ 1000。原创 2025-11-23 21:11:30 · 154 阅读 · 0 评论 -
(B卷,100分)- 报文回路(Java & JS & Python)华为OD
IGMP 协议中响应报文和查询报文,是维系组播通路的两个重要报文,在一条已经建立的组播通路中两个相邻的 HOST 和 ROUTER,ROUTER 会给 HOST 发送查询报文,HOST 收到查询报文后给 ROUTER 回复一个响应报文,以维持相之间的关系,一旦这关系断裂,那么这条组播通路就异常”了。第一行抓到的报文数量C (C≤100) ,后续C行依次输入设备节点D1和D2,表示从D1到D2发送了单向的报文,D1和D2用空格隔开。根据题目意思,想要组播通路之间正常,则有数据传递的两个节点之间必须是双向的。原创 2025-11-23 21:10:39 · 234 阅读 · 0 评论 -
【华为OD-新A卷-AI处理器组合100分(python、java、c++、js、c)】
【华为OD-新A卷-AI处理器组合100分(python、java、c++、js、c)】题目某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器,编号分别为0、1、2、3、4、5、6、7。编号0-3的处理器处于同一个链路中,编号4-7的处理器处于另外一个链路中,不通链路中的处理器不能通信。如下图所示:现给定服务器可用的处理器编号数组array,以及任务申请的处理器数量num,找出符合下列亲和性调度原则的芯片组合。如果不存在符合要求的组合,则返回空列表。原创 2025-11-20 21:26:42 · 817 阅读 · 0 评论 -
(新A卷,200分)- 二维伞的雨滴效应(Java & JS & Python & C)华为OD
之后,我们可以继续按上面逻辑递归的判断:根的左子树[satrt + 1, i - 1]、根的右子树[i, end],他们对应索引范围的子序列,是否满足二叉搜索树前序遍历的特点(根节点的值 大于 其左子树的所有节点的值、根节点的值 小于 其右子树的所有节点的值)因此,我们从start+1位置开始判断,如果satrt+1位置的元素值 < 根节点的元素值(start位置),那么start+1位置的元素就是根节点的左子树节点,按此逻辑,依次往后判断。按照上面逻辑,我们可以得到根节点、根的左子树、根的右子树。原创 2025-11-20 21:13:18 · 573 阅读 · 0 评论 -
华为OD-新A卷-获得完美走位 100分(python、java、c++)
题目在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。假设玩家每按动一次键盘,游戏任务会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏任务必定会回到原点,则称此次走位为完美走位。现给定玩家的走位(例如:ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。其中待更换的连续走位可以是相同长度的任何走位。请返回待更换的连续走位的最小可能长度。原创 2025-11-20 21:10:13 · 930 阅读 · 0 评论 -
(新A卷,100分)- 单向链表中间节点(Java & JS & Python)华为OD
所谓快慢指针,即通过两个指针遍历链表,慢指针每次步进1个节点,快指针每次步进2个节点,这样快指针必然先到达链表尾部,而当快指针到达链表尾部时,慢指针其实刚好就是在链表中间节点的位置(奇数个节点取中间,偶数个取偏右边的那个值)。本题虽然给出了节点数,但是这些节点不一定属于同一个链表结构,因此本题的链表长度也是未知的,而本题要求的链表中间节点要求刚好和快慢指针找的中间节点吻合,因此本题最佳策略是使用快慢指针。另外,链表还有一个常考问题,那就是链表长度未知的情况下,我们如何找到链表的中间节点?原创 2025-11-19 22:20:00 · 495 阅读 · 0 评论 -
(新A卷,100分)- 报数问题(Java & JS & Python)华为OD
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。具体实现请对照下面CycleLinkedList代码来看。本题是经典的约瑟夫环问题,最佳解题策略是利用循环链表。有n个人围成一圈,顺序排号为1-n。因此,本题的关键是实现循环链表。输入人数n(n < 1000)输出最后留下的是原来第几号。原创 2025-11-19 22:12:30 · 509 阅读 · 0 评论 -
(新A卷,100分)- 货币单位换算(Java & JS & Python)华为OD
剩下的就是将不同单位转换成人民币分的汇率计算工作了,如下源码中exchange记录的不同单位转成人民币分的汇率。每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。1HKD=100cents(1港元=100港分)1GBP=100pence(1英镑=100便士)1CNY=100fen(1元=100分)原创 2025-11-12 20:44:58 · 554 阅读 · 0 评论 -
(新A卷,100分)- 路灯照明问题(Java & JS & Python & C)华为OD
由于这两个区间的起始位置关系已经确定了,判断这两个区间是否有交集,只要看ran[0].end和ran[1].start即可,如果ran[0].end > ran[1].start,则说明这两个区间有交集,可以合并。这样排序的好处是,所有区间都按照起始位置升序排序了,比如第一个ran[0]和第二个区间ran[1],我们可以确定:ran[0].start <= ran[1].start。根据第二行输入的路灯的照明半径数组arr,我们可以基于路灯的位置,求得路灯的照明范围区间。这样的话,我们就得到了一组区间。原创 2025-11-12 20:42:47 · 436 阅读 · 0 评论 -
(新A卷,100分)- 执行时长(Java & JS & Python)华为OD
摘要:本文讨论了一个GPU任务调度问题,要求在保证GPU不空闲的情况下,计算执行完所有任务的最短时间。输入包括GPU每秒钟最大处理任务数、任务数组长度和每秒新增任务数数组。算法通过迭代处理每秒新增任务并累积剩余任务,最后处理剩余任务的时间。Java、JS和Python实现均采用相同逻辑:遍历任务数组,累计处理时间和剩余任务,最后单独处理剩余任务。两个测试用例分别输出6秒和5秒,验证了算法的正确性。原创 2025-11-11 21:55:18 · 1126 阅读 · 0 评论 -
(新A卷,200分)- 计算疫情扩散时间(Java & JS & Python & C)华为OD
题目摘要:计算n×n矩阵中被病菌感染的区域完全扩散所需天数。输入为由0和1组成的数组,0表示未感染,1表示已感染。每天感染区域会向上下左右四个方向扩散。若初始全感染或全未感染则返回-1。使用多源BFS算法,通过队列实现扩散过程,统计健康区域减少到0所需的天数。算法核心为:初始化感染区域队列,逐层扩散并记录新感染区域,直到所有区域被感染。时间复杂度取决于矩阵大小和感染模式。原创 2025-11-11 21:53:34 · 1147 阅读 · 0 评论 -
(新A卷,100分)- 查找接口成功率最优时间段(Java & JS & Python & C)华为OD
这里,我们为了避免陷入遍历i到j,来计算区间[i, j]的总和,我们可以事先定义一个dp数组,dp[i]表示以0~i区间的和(即前缀和)。数组下标为0-1即[0, 0],数组下标为3-4即[2, 2],数组下标为6-7即[0, 2],这三个部分都满足平均值小于等于2的要求,输入有两行内容,第一行为{minAverageLost},第二行为{数组},数组元素通过空格(” “)分隔,输入解释:minAverageLost=2,数组[0, 0, 100, 2, 2, 99, 0, 2]原创 2025-11-11 21:46:42 · 425 阅读 · 0 评论 -
(新A卷,200分)- 路口最短时间问题(Java & JS & Python & C)华为OD
向右的话,则是右转运动,不需要等待,仅需要花费 timePerRod 时间,此时起点到达(1, 2)位置需要122+60 = 182时间,要比(1,2)当前记录的185时间更短,因此根据Dijistra算法,会更新dist[1][2] = 182,接下来有两个点可以当成新的源点,根据Dijistra算法,我们可以选择其中较小权重(时间)的点作为源点,此时由于两点权重(时间)相同,因此任选一个都可以。本题的街道本质上,是一个动态边权的有权图,两个点之间的边权,会因为第三个点的加入而改变,因此边权是动态的。原创 2025-11-10 21:31:49 · 1171 阅读 · 0 评论 -
(新A卷,200分)- 根据IP查找城市(Java & JS & Python & C)华为OD
注:最佳匹配即包含待查询IP且长度最小的IP段,比如例子中3.4.4.4最佳匹配是City2=3.3.3.3,4.4.4.4,5.5.5.5的最佳匹配是City3=2.2.2.2,6.6.6.6。之后就是,遍历待查询的IP地址,去和每一个IP段范围匹配,如果可以匹配上,且对应IP段范围更小,则对应IP段的城市就是当前待查询IP的最佳匹配城市。最佳匹配的城市名列表,采用英文逗号 ',' 分隔,城市列表长度应该跟查询的IP列表长度一致。1)City1有2个IP段,City3的IP段包含City2的IP段;原创 2025-11-10 21:27:43 · 978 阅读 · 0 评论 -
(新A卷,100分)- 异常的打卡记录(Java & JS & Python)华为OD
摘要: 题目要求排查员工打卡记录的两种异常情况:1)实际设备号与注册设备号不一致;2)同一员工两次打卡时间间隔小于60分钟且距离超过5公里。输入为N条打卡记录(格式:工号,时间,距离,实际设备号,注册设备号),需按输入顺序输出异常记录,若无则返回"null"。解法分三步:首先检查单条记录的设备号异常;其次对同一员工的记录按时间排序,检查时间-距离异常;最后汇总异常记录。Java/JS/Python实现均通过哈希表存储员工记录,排序后双重遍历比较,用集合保存异常索引并按序输出。原创 2025-11-10 21:26:11 · 650 阅读 · 0 评论 -
(新A卷,100分)- 执行任务赚积分(Java & JS & Python & C)华为OD
摘要:题目要求在有限时间内处理N个任务以获取最大积分。每个任务处理时间为1单位,有最晚处理时间和积分值。解决思路:1) 按任务截止时间排序;2) 使用优先队列(最小堆)维护当前可执行任务;3) 当时间不足时替换积分最小的任务;4) 最终确保处理任务数不超过时间限制T。通过贪心算法和优先队列实现最优解。Java/Python可直接使用内置优先队列,JS/C需手动实现。时间复杂度O(N log N),空间复杂度O(N)。原创 2025-11-10 21:24:30 · 608 阅读 · 0 评论 -
(新A卷,100分)- 最富裕的小家庭(Java & JS & Python & C)华为OD
题目摘要: 给定一棵树结构,每个节点代表一个家庭成员及其财富值。定义小家庭为一个节点及其直接子节点的集合。要求计算所有小家庭中财富总和的最大值。 输入: 成员数量N N个成员各自的财富值 N-1条父子关系边 输出: 最富裕小家庭的财富总和 解题思路: 初始化每个成员的财富数组 为每个父节点累计其直接子节点的财富值 找出所有小家庭中的最大财富和 关键点: 使用两个数组分别存储原始财富和家庭财富 父子关系处理时只累加子节点的原始财富值 时间复杂度O(N),空间复杂度O(N)原创 2025-11-09 13:16:12 · 393 阅读 · 0 评论 -
(新A卷,100分)- 小明找位置(Java & JS & Python & C)华为OD
本题应该不会存在重复学号问题,因此本题其实就是在一个有序数组中寻找目标值的有序插入位置,可以使用二分法。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模 ≤ 10000;第一行:输入已排成队列的小朋友的学号(正整数),以","隔开;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。关于二分法在有序数组中查找目标值有序插入位置的实现。输出一个数字,代表队列位置(从1开始)。小朋友出操,按学号从小到大排成一列;原创 2025-11-08 19:04:25 · 241 阅读 · 0 评论 -
(新A卷,100分)- 运维日志排序(Java & JS & Python & C)华为OD
运维工程师采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。第一行输入一个整数n表示日志条数,1<=n<=100000,接下来n行输入n个时间。时间可能并没有补全,也就是说,01:01:01.001也可能表示为1:1:1.1。按时间升序排序之后的时间,如果有两个时间表示的时间相同,则保持输入顺序。原创 2025-11-08 19:03:07 · 274 阅读 · 0 评论 -
(新A卷,200分)- 智能驾驶(Java & JS & Python & C)华为OD
题目摘要: 汽车需要从M×N网格地图左上角移动到右下角,网格值为0(障碍)、-1(加油站)或正整数(耗油量)。汽车油箱容量最大100,加油站可加满油。求确保到达终点的最少初始油量,若无法到达则返回-1。算法采用BFS,记录每个位置的最少初始油量和剩余油量,动态更新最优路径。处理回路时优先选择剩余油量更多的路径,并避免死循环。实现涵盖Java、JS、Python、C四种语言。原创 2025-11-07 23:04:28 · 1374 阅读 · 0 评论 -
(新A卷,100分)- 响应报文时间(Java & JS & Python & C)华为OD
IGMP 协议中,有一个字段称作最大响应时间 (Max Response Time) ,HOST收到查询报文,解折出 MaxResponsetime 字段后,需要在 (0,MaxResponseTime] 时间 (s) 内选取随机时间回应一个响应报文,如果在随机时间内收到一个新的查询报文,则会根据两者时间的大小,选取小的一方刷新回应时间。第8秒收到第3个报文,响应时间为20秒,则要到8+20=28秒响应,与第上面的报文的响应时间比较获得响应时间最小为11秒;最终得到最小响应报文时间为11秒。原创 2025-11-07 23:00:51 · 750 阅读 · 0 评论 -
(新A卷,200分)- 垃圾短信识别(Java & JS & Python)华为OD
题目摘要:垃圾短信识别系统通过分析短信交互行为来判断发送者是否为垃圾短信发送者。判定条件为:1)接收者中未回复的人数L>5;2)发送与接收短信数差M>10;3)对任意接收者X,发送与接收短信数差N>5。输入为短信记录条目和待检测ID,输出该ID是否为垃圾短信发送者(true/false)及L和M值。算法通过统计发送/接收关系,计算关键指标进行判断,支持Java、JS、Python三种实现。原创 2025-11-06 21:30:40 · 447 阅读 · 0 评论 -
(新A卷100分)- 掌握的单词个数(Java & JS & Python & C)华为OD
本题可以分别统计出chars和word中各字符的数量,然后遍历word每个字符c,比较word和chars中统计的c字符数量,如果word的c数量超过了chars的c数量,那么就就将超出数量计入diff中。’的数量 >= diff,那么说明chars可以使用万能字符补足不同部分,即可以学会word。" 可以当作 "a" 等字母。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。words 的字符仅由 a-z 英文小写字母组成,例如 "abc"原创 2025-11-06 21:28:50 · 550 阅读 · 0 评论 -
(新A卷,100分)- 剩余银饰的重量(Java & JS & Python & C)华为OD
我们只对初始所有银饰进行一次升序,之后取出尾部三个最重的银饰,如果有未熔完的银块remain,那么就在剩余银饰(有序的)进行二分查找remain的有序插入位置,进行插入,这样可以提高效率。= z,此时剩余重量为 z - y 与 y - x 差值 的银块,可能是0,即完全融掉的情况。如果每次还有未熔完的银块,则重新加入到银饰中,然后再取出最重的三个银饰按照上面逻辑处理,直到所有银饰的数量不足三个,结束上面逻辑。有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。原创 2025-11-06 21:27:35 · 685 阅读 · 0 评论 -
(A卷,100分)- 通信误码(Java & JS & Python)华为OD
题目摘要:给定一个误码数组,要求找出包含频度最高误码的最小子数组长度。首先统计每个误码出现的所有位置索引,然后找出出现次数最多的误码。对于频度相同的误码,选取其出现位置的首尾跨度最小的那个子数组。最终输出该子数组的长度。输入包括误码总数和误码数组,需处理0输入的边界情况。提供Java、JS和Python三种解法,核心思路相同。例如输入512241时,频度最高的1和2各出现2次,最短子数组为[22],输出2。原创 2025-11-06 21:18:37 · 332 阅读 · 0 评论 -
(新A卷,200分)- Wonderland(Java & JS & Python & C)华为OD
Wonderland目前有4种售票方式,分别为一日票(1天)、三日票(3天)、周票(7天)和月票(30天)。最后只需要返回 dp[maxDay] 即可,其中maxDay为最大的游玩日,即为days[days.length - 1]。小王在第10日买了一张三日票,小王可以在第10日、第11日和第12日进行无限制地游玩。现在,请您根据给出地售票价格数组和小王计划游玩日期数组,返回游玩计划所需要地最低消费。定义一个dp数组,dp[i] 的含义是:前 i 天,完成所有游玩日的最少花费金额。完成游玩计划的最低消费。原创 2025-11-06 21:18:13 · 779 阅读 · 0 评论 -
(新A卷,100分)- 智能成绩表(Java & JS & Python & C)华为OD
题目摘要: 本题要求根据输入的学生成绩数据,按照指定科目或总分对学生进行排序。输入包含学生人数n、科目数量m、科目名称、学生姓名及各科成绩。最后指定排序科目,若该科目不存在则按总分排序。成绩相同时按姓名字典序排序。输出排序后的学生姓名列表。 关键点: 动态排序规则(按指定科目或总分) 处理成绩相同情况(按姓名排序) 多语言实现(Java/JS/Python/C) 数据结构设计(Student类存储姓名和成绩数组) 示例说明: 输入1按数学成绩排序输出"xiaohua fangfang minmin原创 2025-11-05 21:15:59 · 367 阅读 · 0 评论 -
(新A卷,100分)- 最大N个数与最小N个数的和(Java & JS & Python)华为OD
给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。主要应该是考察数组常用方法的使用,以及数组去重如何实现。输出最大N个数与最小N个数的和。原创 2025-11-05 21:13:46 · 398 阅读 · 0 评论 -
(新A卷,100分)- 堆内存申请(Java & JS & Python & C)华为OD
当遍历完used_memory后,free_offset会如上图所示指向最后一块空闲内存起始位置,此时该空闲内存块大小为 100 - free_offset,我们需要判断下这个空闲内存块是不是足够申请内存,且是最接近申请内存大小的。我们判断下该空闲内存块大小是否 ≥ 申请内存,若是,则继续判断该空闲内存块大小是否最接近 申请内存,若是,则记录此时的free_offset为一个可能解。然后,定义一个 free_offset,用于记录当前已分配内存的上一个空闲内存块的起始位置,比如。若申请失败,输出 -1。原创 2025-11-05 21:12:06 · 960 阅读 · 0 评论 -
(新A卷,100分)- 两数之和绝对值最小(Java & JS & Python)华为OD
给定一个从小到大的有序整数序列(存在正整数和负整数)数组 nums ,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个绝对值。一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 -65535~65535。每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。本题解析就是上面链接算法题的解析。本题整数序列是升序的。两数之和绝对值最小值。原创 2025-11-05 21:09:13 · 179 阅读 · 0 评论 -
(新A卷,100分)- 游戏分组(Java & JS & Python & C)华为OD
例:10 名参赛者的评分分别为:5 1 8 3 4 6 7 10 9 2,分组为(1 3 5 8 10)和(2 4 6 7 9),两组实力差最小,差值为1。现在给你 10 名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。10个整数,表示10名参与者的游戏水平评分。范围在 [1, 10000] 之间。一队的实力可以表示为这一队 5 名队员的评分总和。1个整数,表示分组后两组实力差绝对值的最小值。原创 2025-11-05 21:07:30 · 341 阅读 · 0 评论 -
(新A卷双机位,100分)- 最小调整顺序次数、特异性双端队列(Java & JS & Python)华为OD
摘要:题目描述了一个特异性双端队列,可以从头/尾添加数据但只能从头移除。给定2n个指令(n次添加和n次移除),要求移除顺序为1到n,求最少调整队列顺序的次数。关键规律是:当队列非空时从头部添加会破坏顺序性,移除时需要检查并调整。算法通过维护size和isSorted状态变量来统计必要调整次数,避免了直接模拟队列操作。Java/JS/Python实现均采用相似逻辑,时间复杂度O(n),适用于n≤3×10^5的规模。样例输入5的指令序列仅需1次调整即满足要求。原创 2025-11-04 21:31:34 · 1088 阅读 · 0 评论
分享