LeetCode——209. 长度最小的子数组

目录

  • 1.问题描述
  • 2.解决办法
    • 1.滑动窗口
  • 3.代码实现

1.问题描述

LeetCode——209. 长度最小的子数组_第1张图片

2.解决办法

1.滑动窗口

滑动窗口:就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。

  • 窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。
  • 窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。
  • 窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,窗口的起始位置设置为数组的起始位置就可以了。

3.代码实现

class Solution {

    // 滑动窗口
    public int minSubArrayLen(int s, int[] nums) {
        int left = 0;
        int sum = 0;
        int result = Integer.MAX_VALUE;
        for (int right = 0; right < nums.length; right++) {
            sum += nums[right];
            while (sum >= s) {
                result = Math.min(result, right - left + 1);
                sum -= nums[left++];
            }
        }
        return result == Integer.MAX_VALUE ? 0 : result;
    }
}

你可能感兴趣的:(算法,leetcode,算法,职场和发展)