仓库盘点
2026 华为OD机试真题 7月1日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
仓库中有若干类物品,每类物品都有一个类别编号(整型)。年底进行仓库盘点,统计每类物品的件数,按照件数从多到少的顺序为物品排序,整理完毕输出物品编号序列。
2026 华为OD机试真题 7月1日华为OD上机新系统考试真题 100 分题型
输入描述
一串物品类别编号,每个编号对应该类物品的一次入库,它是按照入库先后排列的。
格式:一行字符串,编号用逗号分隔,如 1,2,2,3,3,3
输出描述
整理后的物品编号序列,用逗号分隔。
补充说明:
- 如果物品的件数相同,则按照物品首次入库的先后顺序排列。
- 物品种类不超过
10,所有物品的总件数不超过100。
示例1
输入
1,2,2,3,3,3
输出
3,2,1
说明
因为编号为
3的有3件,编号为2的有2件,编号为1的有1件,按件数排序为从高到低排序,3件 >2件 >1件,输出对应编号顺序为:3 2 1。
示例2
输入
3,3,2,2,1,1
输出
3,2,1
说明
因为所有物品的件数均为两件,按物品首次出现的先后顺序排序,输出对应编号顺序为:
3 2 1
解题思路
核心思想
计数排序 + 自定义比较器:遍历一次统计每个编号的出现次数和首次出现位置,然后按规则排序。
关键步骤:
- 遍历数组,用哈希表统计每个编号的出现次数
- 同时记录每个编号首次出现的位置
- 按
(-次数, 首次位置)排序
算法步骤
- 解析输入字符串为整数列表
- 遍历列表,统计
cnt[id]和first[id] - 获取所有不同的编号列表
- 排序:件数降序,件数相同按首次出现位置升序
- 输出排序后的编号序列
复杂度分析
- 时间复杂度:O(n + k log k),n 为物品总数,k 为物品种类数
- 空间复杂度:O(k),存储计数
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/684
文章版权归作者所有,未经允许请勿转载。
THE END