构成 JavaScript 中最大频率的最小可能长度
问题
我们需要编写一个JavaScript函数,它接受一个数字数组arr作为第一个也是唯一的参数。
我们的函数应该找到数组arr的(连续)子数组的最小可能长度,该子数组与整个数组具有相同的任何元素的最大频率。
例如,如果函数的输入是
输入
const arr = [55, 77, 77, 88, 55];
输出
const output = 2;
输出说明
由于元素55和77都出现了两次,因此输入数组对于2中的任何元素都具有最高频率。
在整个数组中频率最高的子数组中,最短的长度是2。因此,我们返回2。
示例
以下是代码-
const arr = [55, 77, 77, 88, 55];
const shortestLength = (arr) => {
let freq = 0
let len = Infinity
arr.reduce((acc, num, index) => {
if (acc[num] !== undefined) {
acc[num].freq += 1
acc[num].range[1] = index
} else {
acc[num] = {
freq: 0,
range: [index, index],
}
}
if (acc[num].freq > freq) {
freq = acc[num].freq
len = acc[num].range[1] - acc[num].range[0] + 1
} else if (acc[num].freq === freq) {
len = Math.min(
len,
acc[num].range[1] - acc[num].range[0] + 1,
)
}
return acc
}, {})
return len
};
console.log(shortestLength(arr));输出结果2
热门推荐
10 新年门口花束祝福语简短
11 盘锦结婚祝福语大全简短
12 父母生日祝福语 简短独特
13 家庭恩爱祝福语简短英文
14 高考俄语祝福语大全简短
15 虎年祝福语 诗句唯美简短
16 生日婚礼祝福语简短精辟
17 虎年喝酒拜年祝福语简短
18 教师闺蜜祝福语简短