Leetcode/Top Interview 150

[Sliding Window][Medium] 209. Minimum Size Subarray Sum

자전거통학 2024. 5. 3. 04:22

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

 

Q. 주어진 정수 배열 nums에 대해서 그 sub array 합이 target보다 크거나 같은, 최소 subarray 길이를 찾아라. 

 

 

 

Solution

 푸는 과정이 sliding window라는 것을 알면 쉬운 문제. 

 

 윈도우의 합이 target이상인 구간에서 길이를 최소 길이로 갱신하고, 

 left 를 당기며 구간 합에서 left를 제거한다. 

 

 위 로직의 연속.

 

public int MinSubArrayLen(int target, int[] nums) 
{
    int left = 0;
    int right = 0;

    int sum = 0;
    int minLen = int.MaxValue;
    for(; right < nums.Length; ++right)
    {
        sum += nums[right];
        while(sum >= target)
        {
            minLen = Math.Min(minLen, right-left+1);
            sum -= nums[left++];   
        }
    }
    return minLen==int.MaxValue ? 0 : minLen;
}

 

 

적절한 결과.