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 的长度。

python 复制代码
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)。

相关推荐
梓桐1 小时前
【算法】- 查找 - 散列表查询(哈希表)
c语言·算法·哈希算法·散列表
luthane1 小时前
python 实现algorithm topo卡恩拓扑算法
数据结构·python·算法
坚持学习的你2 小时前
Jax(Random、Numpy)常用函数
人工智能·pytorch·python·jax
ZPC82102 小时前
Pytorch详解-Pytorch核心模块
人工智能·pytorch·python·深度学习·机器学习
985小水博一枚呀2 小时前
【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。
人工智能·python·深度学习·极限学习机
985小水博一枚呀2 小时前
【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。
人工智能·python·rnn·深度学习
Mr_Xuhhh3 小时前
数据结构阶段测试2的一点小补充
android·开发语言·汇编·数据结构·c++·算法
码农超哥同学3 小时前
Python知识点:如何使用KubeEdge与Python进行容器化边缘计算
开发语言·python·面试·编程·边缘计算
青山瀚海3 小时前
多模态简单了解
深度学习·算法·机器学习·transformer
sp_fyf_20243 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04
人工智能·深度学习·算法·机器学习·计算机视觉·语言模型·数据挖掘