1. 程式人生 > 其它 >[LeetCode Python3] 209. Minimum Size Subarray Sum + O(n) + 滑動視窗

[LeetCode Python3] 209. Minimum Size Subarray Sum + O(n) + 滑動視窗

技術標籤: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