leetcode 209. 长度最小的子数组

题目描述

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

输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。

思路补充:

 用滑动窗口方法;双指针法

解决方法

1.  滑动窗口

class Solution:
    def minSubArrayLen(self, s: int, nums: List[int]) -> int:
        n = len(nums)
        min_len = n
        cur_len = 0
        sums = 0
        l = 0
        for i in range(n):
            cur_len += 1
            sums += nums[i]
            while sums >= s:
                min_len = min(cur_len, min_len)
                sums -= nums[l]
                cur_len -= 1
                l += 1
        if cur_len == n and sums < s:
            return 0
        
        return min_len

2.  双指针法

今天太累了,明天补上
posted @ 2020-05-06 23:45  如鹿~  阅读(104)  评论(0编辑  收藏  举报