码迷,mamicode.com
首页 > 编程语言 > 详细

leetcode 209. 长度最小的子数组

时间:2020-05-07 01:14:32      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:存在   正整数   code   sub   示例   etc   range   一个   lis   

题目描述

给定一个含有 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.  双指针法

今天太累了,明天补上

leetcode 209. 长度最小的子数组

标签:存在   正整数   code   sub   示例   etc   range   一个   lis   

原文地址:https://www.cnblogs.com/carrielu/p/12839986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!