leetcode-华为专题-209. 长度最小的子数组

 

leetcode-华为专题-209. 长度最小的子数组

 

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int maxsize = INT_MAX;
        int left = 0;
        int right = 0;
        int sum = 0;
        while(right<nums.size()){
            sum  = sum + nums[right];
            cout<<"right: "<<right<<" sum: "<<sum<<endl;
            // 为什么搞个while循环
            // 因为如果现在区间内的元素和大于targettarget,移除最坐标元素以后,
            // 可能此时和等于target
            while(sum>=target){ 
                maxsize = min(maxsize, right-left+1);
                sum = sum - nums[left];
                left++; // 区间左移
            }

            right++;
        }
        return maxsize = maxsize==INT_MAX?0:maxsize;
    }
};

 

上一篇:数据结构— —顺序表(静态分配、动态分配)


下一篇:队列