思路:用滑动窗口解决,主要是确定终止和开始滑动的区间,既然要求最小的长度,就可以把result=INT32_MAX,INT32_MIN的用法还未了解。最后得到的长度要与result比较,result里存与length之间的较小值,最后返回result。
题解c++:
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int start_=0;
int sum=0;
int length=0;
int result=INT32_MAX;
for(int end_=0;end_<nums.size();end_++)
{
sum+=nums[end_];
while(sum>=target)
{
length=end_-start_+1;
sum-=nums[start_];
result=min(result,length);
start_++;
}
}
return result == INT32_MAX ? 0 : result;
}
};