从算法随想录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.

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐