在备考研时自己见过类似的题目,当时用的是动态规划的思想对这类问题进行求解,需要设置一个二维数组记录所有的状态,其中的状态转移函数为 a[i][j]=a[i-1][j]+a[i-1][j+1]-a[i-2][j+1];但是在力扣中所需内存太多就爆红了。
int n=nums.length;
int[][] a=new int[n+1][n+1];
for(int i=0;i<=n;i++)
a[0][i]=0;
for(int i=0;i<n;i++)
a[1][i]=nums[i];
for(int i=2;i<=n;i++)
{
for(int j=0;j<n+1-i;j++){
a[i][j]=a[i-1][j]+a[i-1][j+1]-a[i-2][j+1];
}
}
for(int i=1;i<=n;i++){
for(int j=0;j<n+1-i;j++){
if(a[i][j]>=target)return i;
}
}
return 0;
然后就瞄了一眼评论区,看到滑动窗口算法。