基础算法-双指针


双指针

同向双指针 滑动窗口


209. 长度最小的子数组

/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = function (target, nums) {
    let n = nums.length
    let left = 0
    let ans = n + 1
    let sum = 0
    for (let right = 0; right < n; right++) {
        sum += nums[right]
        while (sum - nums[left] >= target) {
            sum -= nums[left]
            left++
        }
        if (sum >= target) {
            ans = Math.min(ans, right - left + 1)
        }
    }
    return ans <= n ? ans : 0
};

var minSubArrayLen = function (target, nums) {
    let n = nums.length
    let left = 0
    let ans = n + 1
    let sum = 0
    for (let right = 0; right < n; right++) {
        sum += nums[right]
        while (sum >= target) {
            ans = Math.min(ans, right - left + 1)
            sum -= nums[left]
            left++
        }
    }
    return ans <= n ? ans : 0
};


文章作者: liwenka1
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liwenka1 !
  目录