127. 华为OD-计算最接近的数(100分)

难度 3
  • 标签:
  • 华为OD真题100分题型
题目描述
题解
题库

华为OD-计算最接近的数(100分)

题目描述

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

X[i]X[i+1]X[i+K1]X[i] - X[i+1] - \dots - X[i+K-1]

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

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

备注

数组 XX 的元素均为正整数。

XX 的长度 nn 取值范围:2n10002 \leq n \leq 1000

KK 大于 00 且小于数组的大小。

ii 的取值范围: 0i<10000 \leq i < 1000

题目的排序数组 X[N]X[N] 的中位数是 X[N/2]X[N/2]

样例1

输入

[50,50,2,3],2

输出

1

说明

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

计算结果为 11X[50,50,2,3]X[50,50,2,3] 根据题目计算 X[i]X[i+K1]X[i] - \dots - X[i+K-1]

得出三个数 00X[0]X[1]=5050X[0] - X[1] = 50 - 50)、4848X[1]X[2]=502X[1] - X[2] = 50 - 2)和 1-1X[2]X[3]=23X[2] - X[3] = 2 - 3),

其中 4848 最接近 5050,因此返回下标 11