সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে একটি লিটেরাল অ্যারে (arr) এবং دوم আর্গুমেন্ট হিসেবে একটি সংখ্যা (num) নেবে। ফাংশনটি অ্যারে-এ সেই সাব-অ্যারেগুলোর সংখ্যা গণনা করবে যেগুলো ঠিক num সংখ্যক ভিন্ন এলিমেন্ট ধারণ করে।
উদাহরণস্বরূপ, ইনপুট যদি হয় –
const arr = [12, 15, 12, 15, 18]; const num = 2;
তবে আউটপুট হবে –
const output = 7;
আউটপুট ব্যাখ্যা
ঠিক ২টি ভিন্ন এলিমেন্ট वाले সাব-অ্যারে গুলো –
[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