给一个数组n,找数组中最小子区间,使得子区间之和不小于给定的数m。算法复杂度为O(n)
#include "iostream"
#include <algorithm>
void sinpleFunction(int* array,int n,int m);
int a[100005];
int main(){
int n,m;
std::cin >> n >> m;
for(int i = 0;i < n;i++)
std::cin >> a[i];
sinpleFunction(a,n,m);
}
void sinpleFunction(int* array,int n,int m){
int i=0;
int j=0,w=0,ans=n+1,sum=0;//TODO
while (true){
while (j<n&&sum<m){
sum=sum+array[j++];
}
if (sum<m){
break;
}
ans=std::min(ans,j-i);
sum-=array[i++];
}
if(ans > n)
ans = 0;
std::cout << ans;
}