华为OD机试300题大纲
参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。
华为 OD 清单查看地址:blog.youkuaiyun.com/hihell/category_12199275.html
华为OD详细说明:https://dream.blog.youkuaiyun.com/article/details/128980730
本篇题解:优雅数组 | 华为OD机试
题目描述
如果一个数组中出现次数最多的元素出现大于等于 k 次,被称为k-优雅数组
,k 也可以被称为优雅阈值
。
例如,数组[1, 2, 3, 1, 2, 3, 1]
,它是一个3-优雅数组
,因为元素1
出现次数大于等于 3 次,
数组[1, 2, 3, 1, 2]
就不是一个3-优雅数组
,因为其中出现次数最多的元素时1
和2
,只出现了 2 次。
给定一个数组 A 和 k,请求出 A 有多少子数组是k-优雅子数组
。
子数组是数组中一个或多个连续元素组成的数组。
例如,数组[1, 2, 3, 4]
包含 10 个子数组,分别是:
[1]
,
[1, 2]
,
[1, 2, 3]
,
[1, 2, 3, 4]
,
[2]
,
[2, 3]
,
[2, 3, 4]
,
[3]
,
[3, 4]
,
[4]
。
输入描述
第一行输入两个整数 n 和 k,n 是数组 A 的长度,k 是优雅阈值。
第二行输入 n 个整数,表示给定的数组 A。
1≤n≤10000,1≤k≤n
数组 A 中的元素 A[i] 满足:1≤A[i]≤n
输出描述
数据一个整数,表示数组 A 中k-优雅子数组
的数量
行尾不要有多余空格