Leetcode 209. Minimum Size Subarray Sum

复盘

没有明确 循环终止条件和循环终止状态定义
需要走几个极端的测试用例

复盘:

对比bobo sir的定义:
初始l=0 , r=-1 , curMin=len +1
初始化的情况要特殊化 , 否则判断的代码要复杂许多
总之就是边界都要添加”哨兵” , 用于判断

画图 / 变量定义 , 区间定义 / 伪代码

图片

结果

func minSubArrayLen(s int, nums []int) int {
    if len(nums)==0 {
        return 0
    }
    l := 0
    r := 0
    curWs := nums[0]
    curWz := 1

    endIndex := len(nums) - 1
    arrLen := len(nums)

    curMinSize := arrLen

    //for r < endIndex ||( l <= r && l<endIndex)  {
        for  l!=endIndex || r!=endIndex   {
        if curWs >= s && l<endIndex {
            curMinSize = min(curMinSize, curWz)
            curWs -= nums[l]
            l++
            curWz--
            continue
        }
        if curWs < s && r<endIndex {
            r++
            curWz++
            //fmt.Println(r)
            curWs += nums[r]
            continue
        }
            if r==endIndex && curWs<s {
                break
            }
    }

    if r==endIndex && l==0 && curWs<s {
        return 0
    }
    return curMinSize

}

func min(i int, i2 int) int {
    if i > i2 {
        return i2
    }
    return i
}

bobo sir's solution
Leetcode 209. Minimum Size Subarray Sum

图片

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!