সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি বাইনারি অ্যারে (arr - শুধু ০ বা ১) এবং একটি সংখ্যা (num) নেবে। আমরা কমপক্ষে num সংখ্যক ০ কে ১-এ পরিবর্তন করতে পারি। ফাংশনটি এই পরিবর্তন করার পর শুধু ১ ধারণকারী সবচেয়ে দীর্ঘ সমsekutিভ সাব-অ্যারে-এর দৈর্ঘ্য রিটার্ন করবে।
উদাহরণস্বরূপ, ইনপুট যদি হয় –
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2;
তবে আউটপুট হবে –
const output = 6;
আউটপুট ব্যাখ্যা
কারণ দুটি ০ কে ১-এ বদলে দিলে অ্যারে-এর শেষ ৬টি এলিমেন্ট ১ হয়ে যাবে।
উদাহরণ
কোডটি নিচের মতো –
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