JavaScript 中包含 n 個不同元素的陣列部分
問題
我們需要編寫一個 JavaScript 函式,此函式以一個文字陣列 arr 作為第一個引數。第二個引數將是一個數字 num。我們的函式應統計並返回陣列中包含恰好 num 個不同元素的子陣列數。
例如,如果輸入函式的是 -
const arr = [12, 15, 12, 15, 18]; const num = 2;
那麼輸出應該為 -
const output = 7;
輸出說明
精確由 2 個不同元素形成的子陣列 -
[12,15], [15,12], [12,15], [15,18], [12,15,12], [15,12,15], [12,15,12,15]
示例
程式碼如下 -
const arr = [12, 15, 12, 15, 18];
const num = 2;
const distinctSubarrays = (arr = [], num = 1) => {
const findDistinct = (count) => {
const map = {};
let ptr = 0;
let distinct = 0;
let res = 0;
for(let right = 0; right < arr.length; right++){
const num = arr[right];
map[num] = (map[num] || 0) + 1;
if(map[num] === 1){
distinct += 1;
};
while(distinct > count){
map[arr[ptr]] -= 1;
if(map[arr[ptr]] === 0){
distinct -= 1;
};
ptr += 1;
};
res += right - ptr + 1;
};
return res;
};
return findDistinct(num) - findDistinct(num - 1)
};
console.log(distinctSubarrays(arr, num));輸出
控制檯中輸出的內容為 -
7
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP