思路:
评论区的大佬太强了,搬运。
len 表示 结果;j表示此片段的最左索引;sum表示片段和
先遍历,逐个递加,直到大于s 时,再去缩短长度。
public int minSubArrayLen(int s, int[] nums) {
int len = 0;
int j = 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
while (sum >= s){
len = len == 0 ? i-j+1 : Math.min(len,i-j+1);
sum-=nums[j++];
}
}
return len;
}