समस्या:
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो एक बाइनरी सरणी, एआर, (एक सरणी जिसमें केवल 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