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

更新於:2022 年 6 月 27 日

115 次觀看

開啟你的 職業

完成課程取得認證

開始學習
廣告
© . All rights reserved.