通过率 44% · 提交 791 · 通过 345
小慕最近在公司负责一个项目,为了激励团队成员,他决定通过一个游戏来分配项目奖金。 按照团队成员的入职顺序,每个人随机抽取一个数字。按顺序往后看,遇到第一个数字比自己大的同事,那么前面的同事就可以获得“距离×数字差值”的奖金。如果后面没有比自己数字大的同事,就给自己分配自己抽到的数字作为奖金。 例如,按入职顺序抽到的数字是:2,10,3。那么第2个同事的数字10比第1个同事的数字2大,所以第1个同事可以获得1×(10-2)=8。第2个同事后面没有比他数字更大的同事,所以他获得自己抽到的数字10作为奖金。第3个同事是最后一个,后面也没有比他更大数字的同事,所以他得到的奖金是3。 请帮小慕计算一下每位团队成员最终分到的奖金是多少。
这类题属于华为 OD 机考真题方向中「200分 / 2024E」方向的高频题型,通常考察对「200分 / 2024E」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行n表示员工数量 第二是每位员工分配的随机数字
最终每位员工分到的奖金数量
注:随机数字不重复,员工数量范围110000,随机数范围1100000
示例 1
输入示例
3 2 10 3
输出示例
8 10 3
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
相关图解步骤
先看指定步骤补关键知识点,再回到本题完成标准输入输出。
每一个员工本质上是要找到位于其右边第一个大于它的元素,并且求出它们之间的大小差值和距离差值。显然应该立刻想到使用单调栈来完成。
无论是正序还是逆序,都可以完成这个题目。
单调栈的具体模板和分析可以详见正课内容或者2024/06/22 真题讲解(单调栈专题)。
思路展开 代码采用逆序遍历的单调栈写法,从最后一名员工往前处理。
复杂度分析 设员工人数为 n。
边界与注意事项
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有