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
本作品采用《CC 协议》,转载必须注明作者和本文链接