https://leetcode.com/problems/minimum-size-subarray-sum/
nums
가 주어진다.nums
에서 주어진 정수 target
과 일치하는 부분 집합의 최소 길이를 반환하라.target
을 만족하는 부분 집합이 없는 경우 0을 반환한다.슬라이딩 윈도우
를 사용해서 target보다 값이 같거나 클 때까지 원소를 더한다.target
이상이 되면 길이를 계산하고 최소 길이를 갱신한다.target
보다 작을 때까지 원소를 하나씩 뺀다.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;
}
}