目录
- 一、题目解析
- 二、算法原理
- 三、代码实现
一、题目解析
二、算法原理
注意点:
三、代码实现
我自己写的代码(我的评价是很挫)
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums)
{
int left = 0, right = -1, ret = INT_MAX;
int sum = 0;
while (right<(int)nums.size())
{
if (sum >= target)
{
sum -= nums[left];
ret = min(ret, right - left + 1);
left++;
}
else
{
if (right == nums.size() - 1)
{
break;
}
sum += nums[++right];
}
}
return ret==INT_MAX?0:ret;
}
};
别人的代码(我的评价是写的很清楚,控制的很好)
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums)
{
int ret=INT_MAX,sum=0;
for(int left=0,right=0;right<(int)nums.size();right++)
{
sum+=nums[right];
while(sum>=target)
{
//跟新结果
ret=min(ret,right-left+1);
//滑动窗口
sum-=nums[left];
left++;
}
}
return ret==INT_MAX?0:ret;
}
};