কম্পিউটার টিউটোরিয়াল

C++-এ ম্যাক্স কনসিকিউটিভ ওন্স III


বাইনারি অ্যারে A এবং পূর্ণসংখ্যা K দেওয়া। সর্বোচ্চ K টি ০কে ১-এ ফ্লিপ করে সবচেয়ে লম্বা ১-ओনলি সাবঅ্যারে বের করতে হবে।

উদাহরণ: A=[1,1,1,0,0,0,1,1,1,1,0], k=2 → ৬ (২টি ০ ফ্লিপ করে ৬টি ১)。」

সমাধানের ধাপসমূহ

  • স্লাইডিং উইন্ডো: i রাইট পয়েন্টার, j লেফট পয়েন্টার।
  • k টি ০ অনুমোদন। ০ পেলে k--।
  • k < 0 হলে j বাড়িয়ে উইন্ডো সঙ্কুচিত করুন (০ পেলে k++)।
  • প্রতিটি ধাপে ans = max(ans, i-j+1)।

C++ উদাহরণ

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int longestOnes(vector<int>& A, int k) {
        int ans = 0, j = 0, n = A.size();
        for (int i = 0; i < n; i++) {
            if (A[i] == 0) k--;
            while (j <= i && k < 0) {
                if (A[j] == 0) k++;
                j++;
            }
            ans = max(ans, i - j + 1);
        }
        return ans;
    }
};

int main() {
    vector<int> v = {1,1,1,0,0,0,1,1,1,1,0};
    Solution ob;
    cout << ob.longestOnes(v, 3); // output 10
}

ইনপুট

[1,1,1,0,0,0,1,1,1,1,0] 3

আউটপুট

10
  1. C++-এ The Maze III সমস্যা সমাধান

  2. C++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)

  3. সি++-এ স্পায়রাল ম্যাট্রিক্স III (Spiral Matrix III)

  4. C++-এ অগ্লি নাম্বার III