hwooo
LeetCode (C/C++) 209. Minimum size Subarray Sum 본문
https://leetcode.com/problems/minimum-size-subarray-sum/

풀이
투포인터를 사용, end point를 증가하며 주어진 배열을 순회하며 부분합을 구한다.
이 때 부분합이 target보다 커지면 start point를 증가시켜 target보다 큰 부분합의 최소 길이를 구한 후 최소 길이(minLen)를 갱신한다.
코드
class Solution {
#define MAX_VAL 100001
public:
int minSubArrayLen(int target, vector<int>& nums) {
int minLen = MAX_VAL, size = nums.size();
int sum = 0, start = 0, end = 0;
// 주어진 배열을 끝까지 순회
while (end < size) {
// end idx 증가시키면서 현재 idx 합함
sum += nums[end++];
// 현재 합 >= target
if (sum >= target) {
// 합이 target보다 클 때까지 start idx++ 하며 값을 빼줌
while (sum - nums[start] >= target) {
sum -= nums[start];
start++;
}
// 최소길이 갱신
minLen = min(minLen, end - start);
}
}
return minLen == MAX_VAL ? 0 : minLen;
}
};
'Study > Algorithm' 카테고리의 다른 글
| LeetCode (C/C++) 1710. Maximum Units on a Truck (0) | 2024.06.03 |
|---|---|
| LeetCode (C/C++) 937. Reorder Data in Log Files (0) | 2024.06.03 |
| LeetCode (C/C++) 36. Valid Sudoku (0) | 2024.05.29 |
| LeetCode (C/C++) 452. Minimum Number of Arrows to Burst Balloons (0) | 2024.05.29 |
| 프로그래머스 (C/C++) 154539 : 뒤에 있는 큰 수 찾기 (0) | 2024.05.27 |