问题描述:
- 给定一个正整数数组和一个正整数
target
。- 找出数组中满足和
>= target
且长度最小的连续子数组,并返回其长度。
- 找出数组中满足和
核心思路:
- 滑动窗口基础应用题。
- 扩大窗口直到满足条件(子数组和
>= target
),一旦满足条件就缩小窗口。
- 扩大窗口直到满足条件(子数组和
代码实现:
class Solution
{
public:
int minSubArrayLen(int target, vector<int>& nums)
{
int m = nums.size();
int ans = INT_MAX;
int l = 0, r = 0;
int sum = 0;
while(r < m)
{
sum += nums[r++];
while(sum >= target)
{
ans = min(ans, r-l);
sum -= nums[l++];
}
}
return ans == INT_MAX ? 0 : ans;
}
};