力扣 209 长度最小的子数组
解法:滑动指针(对同向双指针区间内的数据处理)
1)先初始化 两个指针 left ,right。
2)右移指针right的同时使用sum记录指针right处的值,并判断sum的值是否满足要求,如果满足要求,利用循环来移动指针left,并记录每次满足要求的子数组最小长度。
3)当指针right走到数组尾端时结束。
4)返回最小长度。
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int left = 0 ,right = 0 , sum = 0,len = INT_MAX;
while(right < nums.size())
{
sum += nums[right];
while(sum >= target)
{
len = min(len,right - left +1);
sum -= nums[left++];
}
++right;
}
return len == INT_MAX ? 0 : len; //如果len=INT_MAX,说明整个数组所有元素之和都小于target.
}
};