覆盤
沒有明確 迴圈終止條件和迴圈終止狀態定義
需要走幾個極端的測試用例
覆盤:
對比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
本作品採用《CC 協議》,轉載必須註明作者和本文連結