华为OD机考:OD统一考试D卷+C卷+A卷+B卷+刷题OJ
真题目录:华为OD机考机试 真题目录( D卷 +C卷 + B卷 + A卷) + 考点说明
在线OJ:点击立即刷题,模拟真实机考环境
华为OD面试真题精选:华为OD面试真题精选
题目描述
从一个长度为N的正数数组numbers中找出长度至少为L且几何平均值最大子数组,并输出其位置和大小。(K个数的几何平均值为K个数的乘积的K次方根)
若有多个子数组的几何平均值均为最大值,则输出长度最小的子数组。
若有多个长度相同的子数组的几何平均值均为最大值,则输出最前面的子数组。
输入描述
第一行输入为N、L
- N表示numbers的大小(1 ≤ N ≤ 100000)
- L表示子数组的最小长度(1 ≤ L ≤ N)
之后N行表示numbers中的N个数,每个一行(10^-9 ≤ numbers[i] ≤ 10^9)
输出描述
输出子数组的位置(从0开始计数)和大小,中间用一个空格隔开。
备注
用例保证除几何平均值为最大值的子数组外,其他子数组的几何平均值至少比最大值小10^-10倍
用例
输入 | 3 2 2 2 3 |
输出 | 1 2 |
说明 | 长度至少为2的子数组共三个,分别是{2,2}、{2,3}、{2,2,3},其中{2,3}的几何平均值最大,故输出其位置1和长度2 |
输入 | 10 2 0.2 0.1 0.2 0.2 0.2 0.1 0.2 0.2 0.2 0.2 |
输出 | 2 2 |
说明 | 有多个长度至少为2的子数组的几何平均值为0.2,其中长度最短的为2,也有多个,长度为2且几何 |