Leetcode # 209. Minimum Size Subarray Sum

https://leetcode.com/problems/minimum-size-subarray-sum

Solution: Sliding Window

Time Complexity: O(len(nums))
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)

class Solution:
  def minSubArrayLen(self, target: int, nums: List[int]) -> int:
    ans = inf
    left = curr = 0
    for right in range(0, len(nums)):
      # do logic here to add arr[right] to curr
      curr += nums[right]
    
      while curr - nums[left] >= target:
        # remove arr[left] from curr
        curr -= nums[left]
        left += 1
        
      # update ans
      if curr >= target:
        ans = min(ans, right - left + 1) 
    
    return 0 if ans is inf else ans

Solution – Time Complexity: O(len(nums) * log(len(nums)))

  • sums[i] := nums[i] + (sums[i – 1] if i > 0 else 0)
  • ∀ sums[i], if ∃ j ∈ [k for k in range(i) if sums[i] – (sums[k – 1] if k > 0 else 0) >= target]
    ⇒ ans = min(ans, i – j + 1)
    (Find the j with binary search (O(log(n))) 
      then you get O(len(nums) * log(len(nums))))

Last Updated on 2023/08/16 by A1go

目錄
Bitnami