235 字
1 分钟
LeetCode-209.长度最小的子数组
滑动窗口
给定一个含有
n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于
target的长度最小的 子数组[numsl, numsl+1, ..., numsr-1, numsr],并返回其长度**。**如果不存在符合条件的子数组,返回0。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:
输入:target = 4, nums = [1,4,4]输出:1示例 3:
输入:target = 11, nums = [1,1,1,1,1,1,1,1]输出:0
1.自己的解法(滑动的窗口)
手撕,不过自己写的太丑陋了,让ai润色一下
func minSubArrayLen(target int, nums []int) int { left, right := 0, 0 sum := 0 minlen := len(nums) + 1
for right < len(nums) { sum += nums[right]
for sum >= target { minlen = min(minlen,right-left+1) sum -= nums[left] left++ }
right++ }
if minlen == len(nums) + 1 { return 0 }
return minlen} LeetCode-209.长度最小的子数组
https://sheep44044.github.io/posts/算法/滑动窗口/leetcode-209长度最小的子数组/