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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP