LeetCode Solutions
209. Minimum Size Subarray Sum
Time: $O(n)$ Space: $O(1)$
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int ans = INT_MAX;
int sum = 0;
for (int l = 0, r = 0; r < nums.size(); ++r) {
sum += nums[r];
while (sum >= s) {
ans = min(ans, r - l + 1);
sum -= nums[l++];
}
}
return ans < INT_MAX ? ans : 0;
}
};
class Solution {
public int minSubArrayLen(int s, int[] nums) {
int ans = Integer.MAX_VALUE;
int sum = 0;
for (int l = 0, r = 0; r < nums.length; ++r) {
sum += nums[r];
while (sum >= s) {
ans = Math.min(ans, r - l + 1);
sum -= nums[l++];
}
}
return ans != Integer.MAX_VALUE ? ans : 0;
}
}
class Solution:
def minSubArrayLen(self, s: int, nums: List[int]) -> int:
ans = math.inf
summ = 0
j = 0
for i, num in enumerate(nums):
summ += num
while summ >= s:
ans = min(ans, i - j + 1)
summ -= nums[j]
j += 1
return ans if ans != math.inf else 0