9.26华为OD机试真题 新系统 – 均衡调度 (JavaPyCC++JsGo)

2026 华为OD机试真题9月26日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

已知存在两个任务队列 $A$、$B$,队列成员表示单个任务耗时;为了缩短整体运行时间,需要队列 $A$ 和队列 $B$ 中任务的总耗时一致。

初始时队列 $A$ 和队列 $B$ 的任务总耗时不同,要求只进行一次任务交换:从 $A$ 中选择一个任务,从 $B$ 中选择一个任务,两者互换;交换后要求两个队列的任务总耗时相等。

请你找出队列 $A$ 和队列 $B$ 中需要交换的任务位置 $[i,j]$(数组下标从 $0$ 开始),规则说明:

  1. 单个任务耗时取值 $0 < T < 100$。
  2. 用例保证均有解,且满足条件的下标对 $[i,j]$ 唯一。
  3. 队列 $A$ 和队列 $B$ 长度为 $1 \sim 50$。

2026 华为OD机试真题9月26日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

输入描述

第一行输入整型数组 $A$,表示队列 $A$ 中各任务的耗时,元素之间使用英文逗号分隔。

第二行输入整型数组 $B$,表示队列 $B$ 中各任务的耗时,元素之间使用英文逗号分隔。

输出描述

输出数组 $[i,j]$,其中 $i$ 是 $A$ 中参与交换任务的原始下标,$j$ 是 $B$ 中参与交换任务的原始下标,下标从 $0$ 开始。

示例1

输入

1,2,9
1,2,3,4

输出

[1,0]

说明

将队列 $A$ 中的 $2$(下标为 $1$)和队列 $B$ 中的 $1$(下标为 $0$)互换位置,两个任务队列中任务总耗时均为 $11$,因此返回互换位置下标 $[1,0]$。

示例2

输入

1,15,9
2,4,6,8,25

输出

[1,4]

说明

将队列 $A$ 中的 $15$(下标为 $1$)和队列 $B$ 中的 $25$(下标为 $4$)互换位置,两个任务队列中任务总耗时均为 $35$,因此返回互换位置下标 $[1,4]$。

解题思路

本题采用【数学推导 + 查表】算法:设两个队列的总耗时分别为 sumA 和 sumB,从 $A$ 中交换耗时 $a$,从 $B$ 中交换耗时 $b$。交换后满足 sumA-a+b=sumB-b+a,化简可得 a-b=(sumA-sumB)/2。

由于任务耗时范围是 $1 \sim 99$,可以用一个长度为 $100$ 的下标表记录 $B$ 中每个耗时第一次出现的位置。遍历 $A$ 时,对于当前耗时 $a$,只需查找 b=a-(sumA-sumB)/2,找到后立即返回对应下标。

题目保证解存在且唯一,因此两个总耗时的差一定为偶数,也不会出现多个有效下标对。实现中仍对奇数差和越界的目标耗时进行防御

THE END