构成 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

以上是 构成 JavaScript 中最大频率的最小可能长度 的全部内容, 来源链接: utcz.com/z/356258.html

回到顶部