给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr]
并返回其长度。如果不存在符合条件的子数组,返回 0 。
解题思路:
典型的双指针问题
右指针前探 累加
(大于等于target后)左指针右移 减小累加和
(大于等于target)条件成立基础上,动态比较最小长度
返回
class Solution(object):
def minSubArrayLen(self, target, nums):
if not nums:
return 0
lenMax = len(nums)+1
left, right = 0, 0
total = 0
while right<len(nums):
total += nums[right]
while total >= target:
lenMax = min(lenMax, right-left+1)
total -= nums[left]
left += 1
right += 1
return 0 if lenMax == len(nums)+1 else lenMax