AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0055. 魔法数据的中位秘钥

简单通过率 48% · 提交 149 · 通过 71
排序数学模拟

小慕在整理项目数据时遇到了一个棘手的问题:他需要从一组混乱的数值序列中提取出关键参数。为此,他必须先对序列进行,但在那之前,他要用一个被称为“中位基准值”的数值来修正偏差。根据项目组的经验,最合适的“中位基准值”是取自该数值序列按升序排列后前三分之一元素的。 “中位基准值”的定义如下: - 若元素个数为奇数,则取中间那个数; - 若为偶数,则取中间两个数的平均值,。 此外,在取前三分之一的数字时,如果不能整除,则向上取整(例如:5 的三分之一向上取整为 2)。 请你帮助小慕完成这一数据处理的关键步骤。

提示:带虚线的词点一下有通俗解释。

输入描述

第一行输入一个正整数 `count`,表示魔法能量序列中的元素个数,满足 `1 <= count <= 10000`。 第二行输入 `count` 个非负整数,表示魔法能量序列 `arr`,其中 `0 <= arr[i] <= 100000`。

输出描述

输出一个整数,表示提取出的“中位秘钥”。

示例

示例 1

输入

10  
2 3 1 6 1 10 2 5 9 8

输出

2

说明:- 按升序排列为:`[1, 1, 2, 2, 3, 5, 6, 8, 9, 10]` - 前三分之一个数为 `ceil(10/3) = 4`,即 `[1, 1, 2, 2]` - 中位数为 `(1 + 2) // 2 = 1.5` 向上取整为 `2`

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
中位秘钥计算图解 原始序列: 2 3 1 6 1 10 2 5 9 8 排序后: 1 1 2 2 3 5 6 8 9 10 取前 ceil(10/3)=4 个 前4个:[1,1,2,2] 偶数个,取中间两个:1 和 2 平均值:(1+2)/2 = 1.5 向上取整 → 中位秘钥 = 2 输出:2
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「魔法数据的中位秘钥」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。