目的:减少while循环
解决数组中定长问题。
LC209长度最小的子数组
正确代码
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int i = 0, j = 0; //
int total = 0;
int res = nums.size() + 1;
if(nums.size() == 0 || nums.empty())
{
return 0;
}
while( j != nums.size())
{
//j向后移动,直到碰到末尾
//从i到j求和,判断是否>=target,如果是,i向后移动,形成新的窗口,再求和判断,是否要 //更新长度
total += nums[j];
j++;
while(total >= target)
{
total -= nums[i];
i++;
if(j-i+1 < res)
{
res = j-i+1;
}
}
}
if(res == nums.size() +1)
{
return 0;
}
else
{
return res;
}
}
};
LC1456
原文:https://www.cnblogs.com/zlh-1024powr/p/14596301.html