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

ন্যূনতম আকারের সাবঅ্যারে সমষ্টি C++-এ


ধরা যাক n উপাদানের একটি অ্যারে এবং একটি পজিটিভ ইন্টিজার s আছে। আমরা একটি সংলগ্ন সাবঅ্যারের ন্যূনতম দৈর্ঘ্য বের করব যার সমষ্টি s-এর চেয়ে বড় বা সমান। যদি এমন কোনো সাবঅ্যারে না থাকে, তবে 0 রিটার্ন করব। যদি অ্যারে হয় [2,3,1,2,3,4] এবং sum হয় 7, তবে আউটপুট হবে 2। কারণ সাবঅ্যারে [4,3]-এর দৈর্ঘ্য ন্যূনতম এই কেসে।

সমাধানের ধাপগুলো −

  • ans := 0, n := অ্যারে A-এর আকার, j := 0 এবং sum := 0

  • i = 0 থেকে n-1 পর্যন্ত

    • sum := sum + A[i]

    • যখন sum - A[j] >= K এবং j <= i

      • sum := sum - A[j]

      • j ১ বাড়াব

    • যদি sum >= K হয়, তবে

      • যদি ans = 0 হয় বা ans > (i - j + 1) হয়, তবে ans := (i - j + 1)

  • ans রিটার্ন করব

নিচের ইমপ্লিমেন্টেশন দেখুন −

উদাহরণ

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int minSubArrayLen(int K, vector<int>& A) {       int ans = 0;       int n = A.size();       int j = 0;       int sum = 0;       for(int i = 0; i < n; i++){          sum += A[i];          while(sum - A[j] >= K && j <= i){             sum -= A[j];             j++;          }          if(sum >= K){             if(ans == 0 || ans > (i - j + 1)) ans = (i - j + 1);          }       }    return ans;    } }; main(){    vector<int> v = {2,3,1,2,4,3};    Solution ob;    cout << ((ob.minSubArrayLen(7,v))); }

ইনপুট

7 [2,3,1,2,4,3]

আউটপুট

2

  1. C++-এ Subarray Sum Equals K

  2. C++-এ ম্যাট্রিক্সে মিনিমাম পাথ সম (Minimum Path Sum)

  3. C++-এ ম্যাক্সিমাম সাবঅ্যারে সাম মডুলো m

  4. ত্রিভুজে ন্যূনতম সম পথ বের করা (C++)