LeetCode 209. 长度最小的子数组(双指针+滑动窗口)

题目描述

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。

思路

详见链接

代码

class Solution:
	def minSubArrayLen(self , s:int , nums) -> int:
		n = len(nums)
		l = 1
		res = float("inf")
		tmp = 0
		for r in range(n):
			tmp += nums[r]
			while(tmp >= s ):
				res = min(res , r-l+1)
				tmp -= nums[l]
				l += 1
		return res if(res!=float("inf")) else 0
test = Solution()
test.minSubArrayLen(7,[2,3,1,2,4,3])

效果

在这里插入图片描述

发布了38 篇原创文章 · 获赞 194 · 访问量 4708

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/103949807