릿코드 minimun size subarray sum

전종원·2025년 9월 29일

Intuition

연속되는 부분배열의 합이 target이 되는 최소 길이 도출

Approach

  • 다른 투포인터 처럼 정렬 쓰면 순서가 망가져서 안됌
  • 슬라이딩 윈도우 기법 활용
  • e가 for문을 돌며 sum 증가
  • s는 sum이 target 이상인 경우 정답을 업데이트 하며 s 증가 및 sum 업데이트

Complexity

  • Time complexity: O(n)O(n)
    e가 for문을 도는 동안 s는 특정 조건하에서만 최대 n까지 돈다.
    따라서 n
  • Space complexity: O(1)O(1)
    input을 제외하면 모두 상수를 담는 변수들

Code

from collections import deque

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        answer = float('inf')
        sum = 0
        s = 0
        e = 0
        for e in range(len(nums)):
            sum += nums[e]
            while sum >= target:
                answer = min(answer, e-s+1)
                sum -= nums[s]
                s += 1
                
        if answer == float('inf'): return 0
        else:
            return answer
        

0개의 댓글