思路:设变量j为长度最小子数组结尾位置,j遍历数组。设变量i为长度最小子数组开始位置,i初始设置为0;j遍历数组sum+=a[j]直到sum大于s,此时再i++,直到和小于s为止再j++,将i,j返回。
简易代码:
int i=0,j=0,sum=0,result= MAX_INT;
for(;j<=n;j++){
sum+=a[j];
while(sum>s){
length=j-i+1;
result=min(result,length)
sum-=result;
i++;
}
return result;
}