文章

209. 长度最小的子数组

问题209 长度最小的子数组 ★★☆☆☆

https://leetcode-cn.com/problems/minimum-size-subarray-sum/

这个题目可以算是比较典型的滑动窗口题目了,滑动窗口的解法理解起来并不难,循环不变量是,每次循环先右指针向右扩大窗口,持续扩大直到当前窗口内元素之和大于等于target,然后开始左指针向右缩小窗口,持续缩小直到当前窗口内元素之和小于target。在这个过程中,及时更新满足条件的最小子数组长度。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	public int minSubArrayLen(int target, int[] nums) {
		int min = Integer.MAX_VALUE;
		int left = 0, right = 0;
		int sum = 0;

		while (right < nums.length) {
			sum += nums[right];

			while (sum >= target) {
				min = Math.min(min, right - left + 1);
				sum -= nums[left];
				left++;
			}

			right++;
		}

		return min == Integer.MAX_VALUE ? 0 : min;
	}

在 LeetCode 查看

本文由作者按照 CC BY 4.0 进行授权