সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি বাইনারি অ্যারে arr প্রথম আর্গুমেন্ট এবং একটি সংখ্যা target দ্বিতীয় আর্গুমেন্ট হিসেবে নেবে।
ফাংশনটি অ্যারে arr-এ কতগুলো সাবঅ্যারে আছে যেসব উপাদানগুলোর যোগফল target-এর সমান, সেটি গণনা করবে এবং সেই কাউন্ট ফেরত দেবে।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const arr = [1, 0, 1, 0, 1]; const target = 2;
আউটপুট
const output = 4;
আউটপুট ব্যাখ্যা
কারণ încăচ্ছিত সাবঅ্যারেগুলো হল:
[1,0,1], [1,0,1,0], [0,1,0,1], [1,0,1]
উদাহরণ
const arr = [1, 0, 1, 0, 1];
const target = 2;
const countSubarrays = (arr = [], target = 1) => {
const map = {};
let sum = 0;
let count = 0;
for (const num of arr) {
map[sum] = (map[sum] || 0) + 1;
sum += num;
count += map[sum - target] || 0;
}
return count;
};
console.log(countSubarrays(arr, target));
আউটপুট
4