leetcode-209 长度最小的数组
leetcode-209 长度最小的数组
题目描述:
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
参考:负雪明烛
class Solution(object):
def minSubArrayLen(self, s, nums):
"""
:type s: int
:type nums: List[int]
:rtype: int
"""
res = float("inf")
l,r = 0,0
N = len(nums)
sumc = 0
# 两个while的很有趣,只使用n的复杂度完成这个问题,感觉还是要把思维理清,要分步骤,不要一团浆糊
while r < N:
sumc += nums[r]
while sumc >= s:
res = min(res,r-l+1)
sumc -= nums[l]
l += 1
r += 1
return res if res<float("inf") else 0