209.长度最小的子数组

时游小于 1 分钟LeetCode

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

上次编辑于:
贡献者: 15327360835
Loading...