美文网首页
LeetCode-209-长度最小的子数组

LeetCode-209-长度最小的子数组

作者: 阿凯被注册了 | 来源:发表于2020-11-06 21:57 被阅读0次

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。

image.png
解题思路:
  1. 双指针,滑动窗口;
  2. 初始化快慢指针同时指向index=0,终止条件快指针到数组最后一位;
  3. 当窗口内数字和小于s时,快指针前进,直至数字和大于s,记录此时窗口大小,此时满指针前进,直至窗口内数字和小于s;
  4. 重复步骤3,直至快指针指向终点,且窗口内数字全部弹出,慢指针也指向终点。

Python3代码:

class Solution:
    def minSubArrayLen(self, s: int, nums: List[int]) -> int:
        n = len(nums)
        slow = fast = 0
        min_len=1e9
        ans = 0
        while fast < n:
            ans += nums[fast]
            fast+=1
            while ans>=s:
                min_len = min(fast-slow, min_len)
                ans-=nums[slow]
                slow+=1
        return 0 if min_len == 1e9 else min_len

相关文章

网友评论

      本文标题:LeetCode-209-长度最小的子数组

      本文链接:https://www.haomeiwen.com/subject/hbyxbktx.html