B. 计算最接近的数

    传统题 1000ms 256MiB

计算最接近的数

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目解析和算法源码

华为OD机试 - 计算最接近的数(Java & JS & Python & C & C++)_伏城之外的博客-CSDN博客

题目描述

给定一个数组X和正整数K,请找出使表达式:

X[i] - X[i + 1] - ... - X[i + K - 1]

结果最接近于数组中位数的下标 i ,如果有多个 i 满足条件,请返回最大的 i.

其中,数组中位数:长度为N的数组,按照元素的值大小升序排列后,下标为 N/2 元素的值

备注

  1. 数组X的元素均为正整数
  2. X的长度n取值范围:2 ≤ n ≤ 1000
  3. K大于0目小于数组的大小
  4. i 的取值范围: 0 ≤ i < 1000
  5. 题目的排序数组X[N]的中位数是X[N/2]

用例1

输入

[50,50,2,3],2

输出

1

说明

中位数为50:[50,50,2,3]升序排序后变成[2,3,50,50],中位数为下标4/2=2的元素50

计算结果为1:X [50,50,2,3] 根据题目计算X[i] - ... - X[i + k - 1] 得出三个数0 (X[0] - X[1] = 50 - 50) 、48 (X[1] - X[2] = 50 - 2) 和 -1 (X[2]-X[3] = 2 - 3) ,其中48最接近50,因此返回下标1。

华为OD模拟机考(E卷)【公开赛】2025/1/16 21:00

未参加
状态
已结束
规则
IOI
题目
3
开始于
2025-1-16 21:00
结束于
2025-1-16 23:30
持续时间
2.5 小时
主持人
参赛人数
11