当前位置: 首页 > article >正文

LeetCode 209 Minimum Size Subarray Sum 题目解析和python代码

题目
Given an array of positive integers nums and a positive integer target, return the minimal length of a
subarray
whose sum is greater than or equal to target. If there is no such subarray, return 0 instead.

Example 1:

Input: target = 7, nums = [2,3,1,2,4,3]
Output: 2
Explanation: The subarray [4,3] has the minimal length under the problem constraint.
Example 2:

Input: target = 4, nums = [1,4,4]
Output: 1
Example 3:

Input: target = 11, nums = [1,1,1,1,1,1,1,1]
Output: 0

Constraints:

1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 104

Follow up: If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log(n)).

题目解析
这里我们可以使用 sliding window 的技巧。
我们可以使用两个 pointers,一个是 start 一个是 end,两个指针都从array的开头开始。
向右移动 end 指针来提高 window 的大小,每一次移动指针都把 nums[end] 添加到现在的和。
当这个和大于或等于 target 时,我们要开始缩短 subarray 的长度。于是我们开始移动 start 这个指针来缩小 window 的大小。通过不停的向右移动 start 指针,直到找到最短的 subarray 的长度。

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        start = 0
        curr_sum = 0
        min_len = float('inf')

        for end in range(len(nums)):
            curr_sum += nums[end]

            while curr_sum >= target:
                min_len = min(min_len, end - start + 1)
                curr_sum -= nums[start]
                start += 1
            
        return min_len if min_len != float('inf') else 0

Time complexity 是 O(n)。
Space complexity 是 O(1)。


http://www.kler.cn/news/335984.html

相关文章:

  • 【ADC】噪声(1)噪声分类
  • 医院管理自动化:Spring Boot技术实践
  • C语言复习概要(四)
  • 视觉定位Revisit Anything
  • 在不支持WSL2的Windows环境下安装Redis并添加环境变量的方法
  • 代码随想录算法训练营第二十七天|第77题. 组合 216.组合总和III 17.电话号码的字母组合
  • 胡超:引领中美能源与文化合作的创意先锋
  • 《从零开始大模型开发与微调》真的把大模型说透了!零基础入门一定要看!
  • [Linux] Linux 初识进程地址空间 (进程地址空间第一弹)
  • 秒表实验(Proteus 与Keil uVision联合仿真)
  • 51c视觉~CV~合集2
  • Java之String类
  • PyEcharts教程(001):PyEcharts介绍
  • 力扣977.有序数组的平方
  • 【Python】Python-JOSE:Python 中的 JSON Web Token 处理库
  • Neo4j CQL语句 使用教程
  • 【微服务】服务注册与发现 - Eureka(day3)
  • 【MYSQL】mysql约束---自增长约束(auto_increment)
  • macOS .bash_profile配置文件优化记录
  • 基于pytorch的手写数字识别