209 长度最小的子数组 
给定一个含有  n  个正整数的数组和一个正整数  target  。
找出该数组中满足其总和大于等于  target  的长度最小的
子数组
[numsl, numsl+1, ..., numsr-1, numsr]  ,并返回其长度 **。** 如果不存在符合条件的子数组,返回  0  。
示例 1:
** 输入:**target = 7, nums = [2,3,1,2,4,3] ** 输出:**2 ** 解释:** 子数组  [4,3]  是该条件下的长度最小的子数组。
示例 2:
** 输入:**target = 4, nums = [1,4,4] ** 输出:**1
示例 3:
** 输入:**target = 11, nums = [1,1,1,1,1,1,1,1] ** 输出:**0
ts
function minSubArrayLen(target: number, nums: number[]): number {
    const n = nums.length;
    let ans = n + 1;
    let sum = 0; // 子数组元素和
    let left = 0; // 子数组左端点
    for (let right = 0; right < n; right++) { // 枚举子数组右端点
        sum += nums[right];
        while (sum - nums[left] >= target) { // 尽量缩小子数组长度
            sum -= nums[left++]; // 左端点右移
        }
        if (sum >= target) {
            ans = Math.min(ans, right - left + 1);
        }
    }
    return ans <= n ? ans : 0;
};1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16