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.