https://leetcode.com/problems/minimum-size-subarray-sum/
Input: s = 7, nums = [2,3,1,2,4,3]Output: 2
Explanation: the subarray [4,3] has the minimal length under the problem constraint.
Sliding window의 개념을 익히는 문제였다. 중복되는 값을 재사용 하는 것이 point이다.
넘어온 s ≤ sum을 idx 배열들의 합으로 구하는데 이중에 최소 idx 길이를 return 시킨다.
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int windowStart = 0;
int windowEnd = 0;
int windowSum = 0;
int length = INT_MAX;
while (windowEnd < nums.size())
{
windowSum += nums[windowEnd];
while (windowStart < windowEnd && windowSum - nums[windowStart] >= s)
{
windowSum -= nums[windowStart++];
}
if(windowSum >= s)
{
length = std::min(length, windowEnd - windowStart + 1);
}
windowEnd++;
}
return length == INT_MAX ? 0 : length;
}
};
생각처럼 잘 안풀려서 끙끙댔다...
Runtime: 8 ms, faster than 98.79% of C++ online submissions for Minimum Size Subarray Sum.
Memory Usage: 10.4 MB, less than 98.73% of C++ online submissions for Minimum Size Subarray Sum.