LeetCode 209. 长度最小的子数组Golang版
双指针滑动窗口专题
第 3 题,第 76 题,第 209 题,第 424 题,第 438 题,第 567 题,第 713 题,第 763 题,第 845 题,第 881 题,第 904 题,第 978 题,第 992 题,第 1004 题,第 1040 题,第 1052 题。
1. 问题描述
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。


2. 思路
滑动窗口
3. 代码
func minSubArrayLen(target int, nums []int) int {
var res int = len(nums) + 1
var sum int
left, right := 0, 0
for left < len(nums) {
if right < len(nums) && sum < target {
sum += nums[right]
right++
} else {
sum -= nums[left]
left++
}
fmt.Println(left, right)
if sum >= target {
res = min(res, right - left)
}
}
if res == len(nums) + 1 {
return 0
}
return res
}
func min(a, b int) int {
if a > b {
a = b
}
return a
}
func minSubArrayLen(target int, nums []int) int {
left, right := 0, 0
res := math.MaxInt32
var sum int
for right < len(nums) {
sum += nums[right]
for sum >= target {
res = min(res, right - left + 1)
sum -= nums[left]
left++
}
right++
}
if res == math.MaxInt32 {
return 0
}
return res
}
func min(a, b int) int {
if a > b {
a = b
}
return a
}
这篇博客介绍了如何用Golang解决LeetCode第209题——长度最小的子数组。通过双指针滑动窗口的方法,找到数组中和大于等于目标值的最小子数组长度。代码中展示了两种实现方式,并在循环过程中不断更新满足条件的子数组长度。
812

被折叠的 条评论
为什么被折叠?



