每日一题--LeetCode209:长度最小的子数组
·
从算法随想录up主那里学习到了滑动窗口的方法,受益匪浅,话不多说,上原码!
int minSubArrayLen(int target, vector<int>& nums) {
int i=0;
int result=INT_MAX;
int sum=0;
int subL=0;
for(int j=0;j<nums.size();j++){
sum+=nums[j];
while(sum>=target){
subL=j-i+1;
result=min(result,subL);
sum=sum-nums[i];
i++;
}
}
return result==INT_MAX?0:result;
}
注意要点
1、j<nums.size()这里不可写成j<=nums.size(),否则会使数组越界造成报错。
2、最后return语句不可写成return result,因为有时会有大小不满足target的长度,直接返回result的话会返回INT_MAX,可长度并不是INT_MAX,应该写成return result==INT_MAX?0:result,进行判断后,将长度转换成不满足条件的0.
更多推荐



所有评论(0)