JavaScript陣列的子陣列度數
文字陣列的度數定義為其任何一個元素的最大頻率。
const arr = [1, 2, 3, 3, 5, 6, 4, 3, 8, 3];
本陣列的度數為4,因為3在此陣列中重複了4次。
我們需要編寫一個JavaScript函式來獲取一個文字陣列。函式的任務是查詢一個數組中最小的連續子陣列,子陣列的度數與其所屬的整個陣列相同。
示例
const arr = [1, 2, 3, 3, 5, 6, 4, 3, 8, 3];
const findShortestSubArray = (arr = []) => {
let range = new Map(), maxDegree = 0, minLength = Infinity;
for(let i = 0; i < arr.length; i++){ if(range.has(arr[i])) {
let start = range.get(arr[i])[0];
let degree = range.get(arr[i])[2]; degree++;
range.set(arr[i], [start, i, degree]);
if(degree > maxDegree)
maxDegree = degree;
}
else {
let degree = 1;
range.set(arr[i],[i, i, degree]); if(degree > maxDegree)
maxDegree = degree;
}
}
for (let key of range.keys()){
let val = range.get(key)
if(val[2] === maxDegree){
let diff = (val[1] - val[0]) + 1;
if(diff < minLength) minLength = diff;
}
}
return minLength;
};
console.log(findShortestSubArray(arr));輸出
控制檯中的輸出為:
8
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
安卓
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP