美文网首页
剑指 Offer II 008. 和大于等于 target 的最

剑指 Offer II 008. 和大于等于 target 的最

作者: 邦_ | 来源:发表于2022-04-08 10:21 被阅读0次

因为是连续子数组。。 所以滑动窗口。。
我理解的。。 首先左右边界都在0 因为都是正数 所以向右移动和会变大
当和到达要求的时候 求出当前的长度 右边界-左边界 + 1 赋值给ret
然后总和减去左边界的数字 让左指针往右移动 寻找下一个符合条件的左右边界
最后ret存储的就是最短子数组
最后如果没有找到符合条件的话 返回0

  func minSubArrayLen(_ target: Int, _ nums: [Int]) -> Int {
              var sum = 0
        var left = 0
        var right = 0
        var ret = Int.max
        for i in 0..<nums.count {
            sum += nums[i]
            while sum >= target {
                ret = min(ret, right - left + 1)
                sum -= nums[left]
                left += 1
                
            }
            right += 1
            
        }
        if ret == Int.max {
            return 0
        }
        
        return ret

    }


相关文章

网友评论

      本文标题:剑指 Offer II 008. 和大于等于 target 的最

      本文链接:https://www.haomeiwen.com/subject/xixssrtx.html