通过率 62% · 提交 55 · 通过 34
在魔法世界中,每个商店都拥有一套神奇的金币系统,用来处理顾客的付款和找零。商店的收银台由魔法师精心设计,可以自动完成金币的交易和找零。每种面额的金币代表不同的魔法力量,而你需要设计一个魔法金币收银台系统来处理交易。 给定两个输入参数: 1. :一个列表,表示商店收银台初始拥有的金币数量。金币的面额为 `1卢比`、`5卢比`、`10卢比`、`50卢比` 和 `100卢比`,每种金币面额有对应的数量。 2. payments:一个列表,包含若干次交易。每次交易由两个部分组成:商品价格 `price` 和顾客支付的每种面额金币的数量 `paidGolds`。 规则: - 如果顾客支付的金币比商品价格少,交易失败,商店不会接受顾客的金币。返回 `[-1]`。 - 如果顾客支付的金币与商品价格正好相等,商店接受顾客的付款,并更新收银台的金币数量。 - 如果顾客支付的金币超过商品价格,商店需要找零: - 如果找不开零,交易失败,商店不会接受顾客的金币。返回 `[-2]`。 - 如果能够找零,商店按照来找零,并更新收银台的金币数量。 - 请注意,找零时,商店应先接受顾客的金币后,。
这类题属于华为可信认证科目一方向中「数组 / 可信」方向的高频题型,通常考察对「数组 / 可信」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
Q,表示交易次数。"MagicCashRegister",表示初始化收银台系统。1卢比、5卢比、10卢比、50卢比 和 100卢比 面额的金币数量。Q 行:每行包含两个部分:
price:商品价格,整数。paidGolds:顾客支付的金币数量,以一个列表形式给出,按顺序包含 1卢比、5卢比、10卢比、50卢比 和 100卢比 面额的金币数量。1卢比、5卢比、10卢比、50卢比 和 100卢比 面额的金币数量。[-1]:表示顾客支付的金币少于商品价格。[-2]:表示商店无法找零。"null"。示例 1
输入示例
6 MagicCashRegister 0 0 0 0 0 processTransaction 20 2 1 0 0 1 processTransaction 10 2 1 0 0 0 processTransaction 15 0 1 2 0 0 processTransaction 40 10 0 1 1 0 processTransaction 68 2 2 2 2 0
输出示例
null -2 -1 0 0 1 0 0 5 1 2 0 0 4 0 1 1 0
[0, 0, 0, 0, 0],对应输出 null。20,顾客支付 107,需要找零 87,但商店无法找零,输出 [-2]。10,顾客支付 7,少于价格,输出 [-1]。15,顾客支付 25,找零 10,找零成功,输出 [0, 0, 1, 0, 0]。40,顾客支付 70,找零 30,找零成功,输出 [5, 1, 2, 0, 0]。68,顾客支付 132,找零 64,找零成功,输出 [4, 0, 1, 1, 0]。时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。