目录
1,题目-滑动窗口
2,代码
滑动窗口
3,学习与总结
1,题目-滑动窗口
给定一个含有 n
个正整数的数组和一个正整数 target
。找出该数组中满足其总和大于等于 target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
2,代码
滑动窗口
两个指针 start 和 end 分别表示子数组(滑动窗口窗口)的开始位置和结束位置;
维护变量 sum 存储子数组中的元素和(即从 nums[start] 到 nums[end] 的元素和);
/*** @param {number} target* @param {number[]} nums* @return {number}*/
var minSubArrayLen = function(target, nums) {let n = nums.length;if(n === 0){return 0;}// 滑动窗口let start = 0, end = 0;let sum = 0;let ans = Infinity;while(end < n){sum += nums[end++];while(sum >= target){ans = Math.min(ans,end - start );sum -= nums[start];start++;}}return ans === Infinity? 0:ans;};
3,学习与总结
滑动窗口的理解 结合队列的进出来理解;
. - 力扣(LeetCode)