समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो literals की एक सरणी 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