209. 长度最小的子数组
问题链接
https://leetcode.cn/problems/minimum-size-subarray-sum/description/
解题思路
这是一个长度不定的滑动窗口。
我们需要设置一个left指针和right指针,分别指向滑动窗口的左边界和右边界。
我们判定当前的滑动窗口是否满足题意,如果不满足,则继续移动右指针。
如果满足题意,那开始移动左指针,试图寻找最小的满足条件的范围。
在这个过程中,更新res。
代码
class Solution: def minSubArrayLen(self, target: int, nums: List[int]) -> int: left_ptr, right_ptr = 0, 0 res = 0 cnt = 0 while right_ptr < len(nums): if nums[right_ptr] >= target: return 1 cnt += nums[right_ptr] while left_ptr < right_ptr and cnt >= target: res = min(res, right_ptr-left_ptr+1) if res != 0 else max(res, right_ptr-left_ptr+1) cnt -= nums[left_ptr] left_ptr += 1 right_ptr += 1 return res
也可以这样写:
class Solution: def minSubArrayLen(self, target: int, nums: List[int]) -> int: left_border = right_border = 0 cur_sum = 0 res = len(nums) + 1 while right_border < len(nums): cur_sum += nums[right_border] while left_border <= right_border and cur_sum >= target: res = min(right_border-left_border+1, res) cur_sum -= nums[left_border] left_border += 1 right_border += 1 return res if res <= len(nums) else 0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)