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