मान लीजिए कि हमारे पास n तत्वों की एक सरणी है, और एक सकारात्मक पूर्णांक s है। हमें एक सन्निहित उप-सरणी की न्यूनतम लंबाई ज्ञात करनी है, जिसका योग s के बराबर या अधिक है। यदि कोई नहीं है, तो इसके बजाय 0 लौटाएं। तो अगर सरणी [2,3,1,2,3,4] की तरह है और योग 7 है, तो आउटपुट 2 होगा। यह उपसरणी है [4,3] इस मामले के लिए न्यूनतम लंबाई है।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उत्तर:=0, एन:=सरणी का आकार ए, जे:=0 और योग:=0
-
मेरे लिए 0 से n - 1 की सीमा में
-
योग :=योग + ए[i]
-
जबकि योग – A[i]>=K और j <=1
-
योग :=योग – A[j]
-
j को 1 से बढ़ाएँ
-
-
यदि योग>=k, तो
-
यदि उत्तर =0 या उत्तर> (i - j + 1), तो उत्तर :=(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