【209. 长度最小的子数组】
Leetcode算法练习 笔记记录
- 209. 长度最小的子数组
209. 长度最小的子数组
/*** 思路:* 初始化一个sum值,* 当滑动指针一直增加超过目标值时,尝试收缩左边界。*/public int minSubArrayLen(int target, int[] nums) {int n = nums.length;int min = Integer.MAX_VALUE;int currentSum = 0;int left = 0;for (int right = 0; right < n; right++) {//扫描的过程中直接找到了对应的target值,则直接返回if (nums[right] == target) {return 1;}// 扩张窗口:右边界右移currentSum += nums[right];// 当窗口和 >= target 时,尝试收缩左边界while (currentSum >= target) {min = Math.min(min, right - left + 1);currentSum -= nums[left];left++;}}return min == Integer.MAX_VALUE ? 0 : min;}