leetcode 209. 长度最小的子数组

//找出该数组中满足其总和大于等于 target 的长度最小的 子数组
func minSubArrayLen(_ target: Int, _ nums: [Int]) -> Int {
        //定义变量
        var minLength = -1
        var sum = 0
        //窗口
        var start = 0
        for end in 0..<nums.count {
            //更新变量
            sum += nums[end]
            if sum >= target {
                if minLength == -1 {
                    minLength = end - start + 1
                } else {
                    minLength = min(minLength, end - start + 1)
                }
            }
            //更新窗口
            while sum >= target {
                sum -= nums[start]
                start += 1
                //如果减完之后还是满足题意的,要更新最小值
                if sum >= target {
                    if minLength == -1 {
                    minLength = end - start + 1
                    } else {
                        minLength = min(minLength, end - start + 1)
                    }
                }
            }
        }

        return minLength == -1 ? 0 : minLength
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容