给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其和 ≥ target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
left = 0
summ = 0
result = len(nums)+1
for right in range(len(nums)):
summ = summ + nums[right]
while (summ >= target):
subresult = right - left + 1
result = min(result, subresult)
left = left + 1
summ = summ - nums[left - 1]
return 0 if result == (len(nums) + 1) else result
注意设result为len(nums)+1纯粹是为了在找不到符合要求的子数组时(此时result值为len(nums)),需要能判断出来并return为0。因为若能找到合格的子数组,result的值必不可能大于len(nums),就不可能满足最后的if。