Leetcode209最小连续长度的子数组总和

209 最小连续长度的子数组总和
给定的阵列Ñ正整数,且为正整数小号,找到的最小长度的连续子数组,其sum ≥ s。如果没有,则返回0。

例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
说明:子数组[4,3]在问题约束下具有最小长度。

该方法使用$O(n)的时间复杂度$
class Solution(object):
   def minSubArrayLen(self, s, nums):
       """
       :type s: int
       :type nums: List[int]
       :rtype: int
       """
       l=0
       r=-1 #[l,r]是我们的滑动窗口
       sum=0
       res=len(nums)+1
       while l<len(nums):
           if sum<s and r+1<len(nums):
               r=r+1
               sum=sum+nums[r]
           else:
               
               sum=sum-nums[l]
               l=l+1
               
           if sum>=s:
               res=min(res,r-l+1)
       if res==len(nums)+1:
           res=0
       return res 

版权声明:本文为qq_36264495原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。