समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता होती है जो एक बाइनरी एआर (सरणी जिसमें केवल 0 या 1 होता है), एआर, पहले तर्क के रूप में, और एक संख्या, संख्या, दूसरे तर्क के रूप में लेता है।
हम सरणी में मौजूद अधिकतम संख्या 0s को 1s में बदल सकते हैं, और हमारे फ़ंक्शन को इन परिवर्तनों को करने के बाद केवल 1s वाले सबसे लंबे (सन्निहित) उप-सरणी की लंबाई वापस करनी चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2;
तब आउटपुट होना चाहिए -
const output = 6;
आउटपुट स्पष्टीकरण
क्योंकि दो शून्य को 1 में बदलने के बाद, सरणी के अंतिम 6 तत्व होंगे 1.
उदाहरण
इसके लिए कोड होगा -
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2; const longestOnes = (arr = [], num = 1) => { let max = 0; let left = 0; let curr = num; for(let right = 0; right < arr.length; right++){ if(arr[right] === 0){ curr -= 1; }; while(curr < 0){ if(arr[left] === 0){ curr += 1; }; left += 1; }; max = Math.max(max, right - left + 1); }; return max; }; console.log(longestOnes(arr, num));
आउटपुट
और कंसोल में आउटपुट होगा -
6