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