作者:倾城不了倾了你 | 来源:互联网 | 2023-10-10 09:19
目的:减少while循环解决数组中定长问题。LC209长度最小的子数组正确代码classSolution{public:intminSubArrayLen(inttarget,ve
目的:减少while循环
解决数组中定长问题。
LC209长度最小的子数组
正确代码
class Solution {
public:
int minSubArrayLen(int target, vector& 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 = j-i+1;
}
}
}
if(res == nums.size() +1)
{
return 0;
}
else
{
return res;
}
}
};
LC1456