কম্পিউটার

C++ এ ন্যূনতম সাইজ সাবারে সমষ্টি


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

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • উত্তর :=0, n :=অ্যারের আকার, j :=0 এবং যোগফল :=0

  • 0 থেকে n – 1

    রেঞ্জের i জন্য
    • যোগফল :=যোগফল + A[i]

    • যখন যোগফল – A[i]>=K এবং j <=1

      • যোগফল :=যোগফল – A[j]

      • 1 দ্বারা j বাড়ান

    • যদি যোগফল>=k হয়, তাহলে

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

  • উত্তর ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#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++-এ সাবারের যোগফল K সমান

  2. C++ এ ন্যূনতম পথের যোগফল

  3. C++ এ সর্বাধিক সাবয়ারের সমষ্টি m মডিউল

  4. C++ এ একটি ত্রিভুজে ন্যূনতম সমষ্টি পথ