209.长度最小的子数组
小于 1 分钟
209.长度最小的子数组
/*
* @lc app=leetcode.cn id=209 lang=typescript
*
* [209] 长度最小的子数组
*/
// @lc code=start
// 会超时,但是答案正确
// function minSubArrayLen(target: number, nums: number[]): number {
// // 存储结果,返回其长度
// let res: number[] = [];
// // 定义左右指针
// let l = 0,
// r = 0;
// while (r < nums.length) {
// let sum = 0;
// for (let i = l; i <= r; i++) {
// sum += nums[i];
// }
// if (sum < target) {
// r++;
// } else if (sum >= target) {
// // 对比push
// if (res.length == 0 || r - l < res.length) {
// res = nums.slice(l, r + 1);
// }
// l++;
// }
// }
// return res.length;
// }
function minSubArrayLen(target: number, nums: number[]): number {
// 定义左右指针
let l = 0,
r = 0;
let minLen = Infinity;
let sum = 0;
while (r < nums.length) {
sum += nums[r];
while (sum >= target) {
// 对比
minLen = Math.min(minLen, r - l + 1);
sum -= nums[l];
l++;
}
r++;
}
return minLen === Infinity ? 0 : minLen;
}
// minSubArrayLen(213, [12, 28, 83, 4, 25, 26, 25, 2, 25, 25, 25, 12]);
// minSubArrayLen(7, [2, 3, 1, 2, 4, 3]);
// @lc code=end
Loading...
