通过率 42% · 提交 188 · 通过 79
在一个充满魔法与科技交织的世界中,一个名为“幻影通讯”的魔法公司推出了一种高可靠的在线魔法影像服务。为了保证服务的可靠性,公司针对不同类型的魔法影像,准备了不同的专用魔法,并对指定类型的魔法影像服务进行通道分配。一个魔法师在一个时段只能使用一个魔法影像服务,但可以多次申请。 请实现以下功能: 1. MagicService(int[] channels, int[] charge):初始化系统 - `channels[i]` 表示为 `i` 的初始可用通道个数。 - `charge[i]` 表示魔法影像类型为 `i` 的单位时间费用。 - 魔法影像类型仅为:普通魔法影像、高级魔法影像、超级魔法影像,分别用 `0`、`1`、`2` 表示,且对应的魔法能量从低到高。 2. allocateChannel(int time, int userId, int videoType):在 `time` 时刻,用户 `userId` 申请使用 `videoType` 类型的魔法影像服务。注:计费依照该次申请的魔法影像类型,而非实际占用通道的魔法影像类型。 - 如果当前魔法影像类型 `videoType` 有可用通道,则占用一个通道,并返回 `true`。 - 否则,依次寻找更高魔法能量的通道,如果有可用,则占用该类型的一个通道,并返回 `true`;如果仍找不到可用通道,则返回 `false`。 3. freeChannel(int time, int userId):在 `time` 时刻,用户 `userId` 申请停止在使用的魔法影像服务: - 如果 `userId` 正在使用魔法影像服务,则停止该服务并释放所占用的通道,并返回该次服务的费用(可能为 `0`);否则,返回 `-1`。 - 当有通道释放时,如果之前有其他用户因为申请时通道不足而占用了更高魔法能量的通道,且占用魔法能量高于释放通道的魔法能量、所申请魔法能量不高于释放通道的魔法能量,则选择一个用户进行使用该释放通道。 - 优先选择占用魔法能量最高的用户:如果还有多个,则选择其中 `userId` 最小的。 - 注意:降级所释放通道需要重复上述过程。 4. queryChannel(int userId):查询用户 `userId` 正在使用服务所占用通道的魔法影像类型;若用户不存在或已经停服,则返回 `-1`。
这类题属于华为可信认证科目一方向中「可信 / 系统设计」方向的高频题型,通常考察对「可信 / 系统设计」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
每行表示一个函数调用,初始化函数仅首行调用一次,累计函数调用不超过 1000 次。
1 <= channels[i] <= 1000, 1 <= charge[i] <= 100, channels.length == charge.length == 31 <= time <= 1000, 1 <= userId <= 1000videoType 的取值仅为 0、1、2输入包含若干行,表示对魔法影像服务系统的操作。具体格式如下:
Q,表示总操作数。Q 行,每行表示一个操作命令,命令后可能跟随参数:
MagicService,后跟两行输入:
channels,表示每种魔法影像类型的初始可用通道个数,格式为 [channels[0], channels[1], channels[2]]。charge,表示每种魔法影像类型的单位时间费用,格式为 [charge[0], charge[1], charge[2]]。allocateChannel,后跟三行输入:
time,表示操作时刻。userId,表示用户 ID。videoType,表示申请的魔法影像类型。freeChannel,后跟两行输入:
time,表示操作时刻。userId,表示用户 ID。queryChannel,后跟一行输入:
userId,表示用户 ID。输出包含若干行,表示每个操作的返回值。具体格式如下:
null。True。False。-1。-1。示例 1
输入示例
6 MagicService 8 1 1 10 15 30 allocateChannel 3 107 1 allocateChannel 3 108 1 allocateChannel 5 110 1 queryChannel 108 freeChannel 13 108
输出示例
null True True False 2 150
107 和 108 成功申请高级魔法影像服务,用户 110 申请失败。
108 正在使用超级魔法影像通道。108 停止服务后,返回费用 150。示例 2
输入示例
11 MagicService 1 1 2 5 10 20 allocateChannel 1 100 0 allocateChannel 1 101 0 allocateChannel 2 102 0 allocateChannel 4 103 0 freeChannel 6 100 queryChannel 102 freeChannel 7 103 allocateChannel 7 104 1 freeChannel 8 102 queryChannel 104
输出示例
null True True True True 25 0 15 True 30 1
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
100、101、102、103 分别申请普通魔法影像服务,但部分用户占用了更高魔法能量的通道。
100 停止服务后,用户 102 被降级到普通魔法影像通道。103 停止服务后,用户 101 被降级到高级魔法影像通道,用户 104 成功申请高级魔法影像服务。104 正在使用高级魔法影像通道。© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有