数组之长度最小的子数组

1、给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

用 j 一直往后遍历,当满足一定条件时再用 i循环来找到要求的最小长度。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int i=0,j=0,len=nums.size(),sum=0,ans=0x3f3f3f3f;
        for(j=0;j<len;j++){
            sum+=nums[j];
            while(sum>=target){
                ans=min(ans,j-i+1);
                sum-=nums[i];
                i++;
            }
        }
        if(ans==0x3f3f3f3f){
            return 0;
        }        
        return ans;
    }

};

 

2、

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-size-subarray-sum

posted @ 2023-03-14 14:30  我的秘密小屋  阅读(28)  评论(0)    收藏  举报