跳至主要內容

Leetcode 209. Minimum Size Subarray Sum

Given an array of positive integers nums and a positive integer target, return the minimal length of a 

subarray whose sum is greater than or equal totarget. If there is no such subarray, return 0 instead.

Example 1:

Input: target = 7, nums = [2,3,1,2,4,3]

Output: 2

Explanation: The subarray [4,3] has the minimal length under the problem constraint.

Example 2:

Input: target = 4, nums = [1,4,4]

Output: 1

Example 3:

Input: target = 11, nums = [1,1,1,1,1,1,1,1]

Output: 0

Constraints:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 104

I was stuck in the way of sliding. Initially, I was thinking about two pointer ways, but the ending condition didn’t set well.

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        start = 0
        total = 0
        ans = maxsize

        for i, num in enumerate(nums):
            total += num

            while total >= target:
                ans = min(ans, i - start + 1)

                total -= nums[start]
                start += 1
            
        if ans == maxsize:
            return 0
        else:
            return ans

分類:LeetcodeSliding Window

搶先發佈留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

由 Compete Themes 設計的 Author 佈景主題