[LeetCode/Java] 209. Minimum Size Subarray Sum

yuKeon·2023년 8월 28일
0

LeetCode

목록 보기
10/29

0. 문제

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


1. 문제 설명

  • 양의 정수 배열 nums가 주어진다.
  • nums에서 주어진 정수 target과 일치하는 부분 집합의 최소 길이를 반환하라.
  • 만약 target을 만족하는 부분 집합이 없는 경우 0을 반환한다.

2. 문제 풀이

2.1. 접근법

  • 슬라이딩 윈도우를 사용해서 target보다 값이 같거나 클 때까지 원소를 더한다.
  • 합이 target 이상이 되면 길이를 계산하고 최소 길이를 갱신한다.
  • 최소 길이 갱신 후 합이 target보다 작을 때까지 원소를 하나씩 뺀다.

3. 코드

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int ans = Integer.MAX_VALUE;
        int sum = 0;
        int li = 0;
        int ri = 0;
        
        while (ri < nums.length) {
            sum += nums[ri++];
            while (sum >= target) {
                ans = Math.min(ans, ri - li);
                sum -= nums[li++];
            }
        }
        return (ans == Integer.MAX_VALUE) ? 0 : ans;
    }
}

4. 결과

0개의 댓글