题目链接
题意:在一串数列中,求连续和大于sum的最小长度
思路:用twopointer,用两个指针维护,r表示添加指针,l表示删除指针。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#define maxn 111111
using namespace std;
int a[maxn];
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF) {
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
}
int l=1,r=1;
int sum=0;
int ans=n+1;
while(r<=n) {
sum+=a[r++];
while(sum>=k) {
ans=min(ans,r-l); ///r已经加了
sum-=a[l++];
}
}
if(ans==n+1) printf("0\n");
else printf("%d\n",ans);
}
return 0;
}