[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组
作者:互联网
[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组
题目1:
思路1: 滑动窗口
//思路: 滑动窗口
//指针 [left,right] 记录连续子数组的区间,并记录区间和 sum
//if sum < target; right ++ ;sum += nums[right]
//if sum >= target; 更新最小长度 minLen; sum -= nums[left]; left++
代码
func minSubArrayLen(target int, nums []int) int {
//思路: 滑动窗口
//指针 [left,right] 记录连续子数组的区间,并记录区间和 sum
//if sum < target; right ++ ;sum += nums[right]
//if sum >= target; 更新最小长度 minLen; sum -= nums[left]; left++
//参数处理
if len(nums) ==0 || target <= 0{
return -1
}
//滑动窗口
minLen := 0
left,right,sum := 0,0,nums[0]
for left <= right{
if sum < target {
right ++
//这里会有指针溢出 todo
if right == len(nums) {
return minLen
}
sum += nums[right]
}else {
//更新最小长度
tempLen := right - left + 1
if tempLen < minLen || minLen == 0{
minLen = tempLen
}
sum -= nums[left]
left ++
}
}
return minLen
}
测试
标签:面试题,right,target,nums,sum,minLen,golang,offer2,left 来源: https://blog.csdn.net/jarvan5/article/details/123607904