JavaScript 中组成最大频率的最小可能长度
问题
我们需要编写一个 JavaScript 函数,该函数将数组 arr(作为第一个也是唯一参数)作为输入。
我们的函数应该找到一个数组 arr 的连续子数组中最小的 possible 长度,该长度具有所有数组元素中最大频率相同。
例如,如果该函数的输入为
输入
const arr = [55, 77, 77, 88, 55];
输出
const output = 2;
输出解释
输入数组的最大频率为 2,因为元素 55 和 77 都出现了两次。
在具有最大频率的子数组中,最短长度为 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
广告