Go教程

[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组

本文主要是介绍[算法] 剑指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
}

测试

在这里插入图片描述

这篇关于[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!