题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/description/

核心思想:滑动窗口

  • 定义起始位置和终点位置分别为0

  • 终点下标遍历数组,起点位置更新为当前子序列长度最小的数组

  • while cur_sum >= target: 原因在于 if ( cur_sum >= target) 只能减去一次,如果后续 cur_sum -= nums[left] 后还是>= target ,就无法得到最短长度

  • min_len if min_len != float('inf') else 0:如果 min_len 不等于正无穷(float('inf')),则返回 min_len 的值;否则(即 min_len 为无穷大时),返回 0

class Solution(object):
    def minSubArrayLen(self, target, nums):
        size = len(nums)
        left,right = 0,0
        min_len = float('inf')
        cur_sum = 0
        
        while right < size:
            cur_sum += nums[right]

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