समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो एक बाइनरी सरणी, arr, को पहला तर्क और एक संख्या, target, को दूसरा तर्क के रूप में लेता है।
हमारा फ़ंक्शन सरणी arr में मौजूद उन उपसरणियों की संख्या गिनने वाला है जिनके तत्वों का योग target के बराबर है। हमें अंत में यह गिनती वापस करनी चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
const arr = [1, 0, 1, 0, 1]; const target = 2;
आउटपुट
const output = 4;
आउटपुट व्याख्या
क्योंकि वांछित उपसरणियाँ हैं:
[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