ধরুন আমাদের 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