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
如果ans = 0或ans>(i – j + 1),则ans:=(i – j + 1)
总和:=总和– A [j]
将j增加1
总和:=总和+ A [i]
而总和– A [i]> = K且j <= 1
如果总和> = k,则
返回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
以上是 C ++中的最小大小子数组总和 的全部内容, 来源链接: utcz.com/z/354269.html