#OD275. 计算最接近的数

计算最接近的数

题目解析和算法源码

华为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。