समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो एक बाइनरी सरणी (सरणी जिसमें केवल 0 या 1 हैं) arr को पहले आर्गुमेंट के रूप में और एक संख्या num को दूसरे आर्गुमेंट के रूप में लेता है।
हम सरणी में मौजूद अधिकतम num 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