1.题目
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
示例:
输入:s = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
2.题目意思
略
3.代码
class Solution:
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
n = len(nums)
if s > sum(nums):
return 0
le ,ri = 0, 0
res = len(nums)+1
sum_lr = 0
while ri < n:
while sum_lr < s and ri<n:
sum_lr += nums[ri]
ri += 1
while sum_lr >= s and le>=0:
res = min(res, ri - le)
sum_lr -= nums[le]
le += 1
return res
思路:滑动窗口,双指针~
双指针滑动搜索,左边一个,右边不断滑动直到大于等于s。记录个数。左指针向右滑动一位,继续这样操作。
冲冲冲~