Leetcode 209. Minimum Size Subarray Sum

twisted-fate發表於2019-05-22

覆盤

沒有明確 迴圈終止條件和迴圈終止狀態定義
需要走幾個極端的測試用例

覆盤:

對比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 協議》,轉載必須註明作者和本文連結

相關文章