赞
踩
题目:给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
题目分析:采用的滑动窗口,及快慢指针的方法
先不断累加,如果大于目标值时,移动慢指针,减少值看是否还能大于目标值,依次比较,每次将最短的存下,最终输出最短的值。
- class Solution:
- def minSubArrayLen(self, target: int, nums: List[int]) -> int:
- #快慢指针,滑动窗口
- start,end=0,0
- total=0
- n=len(nums)
- ans=n+1
- while end<n:
- total+=nums[end]
- while total>=target:
- ans=min(ans,end-start+1)
- total-=nums[start]
- start+=1
- end+=1
- return 0 if ans==n+1 else ans
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。