我看答案的时候首先没理解为何要用二分法,其次没理解为何要定义一个float 无穷。
以下是我的简单做法
def minSubArrayLen(s, nums):
n = len(nums)
# 初始化最小长度为0
min_length = 0
# 初始化左指针和当前子数组的和
left = 0
current_sum = 0
# 遍历数组,使用for循环代替while循环
for right in range(n):
# 将当前元素加到当前子数组的和中
current_sum += nums[right]
# 当当前子数组的和大于或等于s时,尝试缩小窗口
while current_sum >= s:
# 更新最小长度
min_length = right - left + 1
# 从当前子数组的和中减去左指针指向的元素
current_sum -= nums[left]
# 将左指针向右移动
left += 1
# 如果最小长度为0,说明没有找到符合条件的子数组
return min_length if min_length != 0 else 0