[LeetCode Python3] 209. Minimum Size Subarray Sum + O(n) + 滑動視窗
阿新 • • 發佈:2021-01-08
技術標籤:LeetCode每日一題
209. Minimum Size Subarray Sum
滑動視窗
class Solution:
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
left, right, size = 0, 0, len(nums) # left, right分別記錄滑動視窗的左右邊界,左閉右開
subsum, minlen = 0, size+1 # minlen的初始化用size+1代替正無窮
while right < size:
while right < size and subsum < s: # 找到subsum >= s的右邊界
subsum += nums[right]
right += 1
# minlen = min(minlen, right-left+1)
while subsum >= s and left < size: # 當subsum >= s時,更新minlen,並逐漸收縮左邊界至subsum < s
minlen = min(minlen, right - left)
subsum -= nums[left]
left += 1
if minlen == size+1:
return 0
else:
return minlen