समस्या:
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो एक बाइनरी सरणी, एआर, (एक सरणी जिसमें केवल 0 या 1 होता है) लेता है। हमारे फ़ंक्शन को 1 और 0 की समान संख्या वाले सरणी से सन्निहित उप-सरणी की लंबाई वापस करनी चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = [1, 0, 0, 1, 0, 1, 0, 0];
तब आउटपुट होना चाहिए -
const output = 6;
आउटपुट स्पष्टीकरण
सरणी के पहले 6 तत्व 1, 0, 0, 1, 0, 1 (तीन 1s और तीन 0s) हैं
उदाहरण
इसके लिए कोड होगा -
const arr = [1, 0, 0, 1, 0, 1, 0, 0];
const findMaxLength = (arr = []) => {
const { length } = arr;
if (length < 2){
return 0
};
const map = new Map();
map.set(0, -1);
let sum = 0;
let max = 0;
for (var i = 0; i < length; i++) {
sum += arr[i] === 0 ? -1 : 1;
if (map.has(sum)) {
max = Math.max(max, i - map.get(sum));
} else {
map.set(sum, i);
};
};
return max;
};
console.log(findMaxLength(arr)); कोड स्पष्टीकरण
यहां, हमने 0 को -1 और 1 को 1 माना और विभिन्न विंडो के लिए योग की गणना की, जब योग 0 होता है, तो हम जानते थे कि सबअरे में 0 और 1 की संख्या समान होनी चाहिए।
आउटपुट
और कंसोल में आउटपुट होगा -
6