长度最小的子数组
题目描述
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
题解
class Solution(object):
def minSubArrayLen(self, s, nums):
"""
:type s: int
:type nums: List[int]
:rtype: int
"""
minlen = float('inf')
left,right,num = 0,0,0
for i in range(len(nums)):
num += nums[i]
right = i
while num >= s:
minlen = min(minlen,right-left+1)
num -= nums[left]
left += 1
return minlen if minlen != float('inf') else 0
双指针