209. 长度最小的子数组
解题思路
文章来源地址https://www.toymoban.com/news/detail-537962.html
- 滑动窗口
- 设置前后指针
- 滑动窗口内的元素之和总是大于或者等于s
- 滑动窗口的起始位置: 如果窗口的值大于等于s 窗口向前移动
- 窗口结束位置:for循环的j
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int left= 0;// 滑动窗口的起始位置
int right = 0;// 滑动窗口的结束位置 其实就是for循环的j
int result = 99999999;
int sum = 0;
// 关键在于如何改变滑动窗口的起始位置 当窗口的和大于等于s 更新result 然后向前移动一个位置
for(right = 0; right < nums.length; right++){
sum += nums[right];
// 窗口向前移动
while(sum >= target){
// 更新result
int sub = right - left + 1;
result = result < sub ? result : sub;
sum -= nums[left++];// 滑动窗口向前移动
}
}
return result == 99999999 ? 0 : result;
}
}
文章来源:https://www.toymoban.com/news/detail-537962.html
到了这里,关于【滑动窗口】209. 长度最小的子数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!