leetcode209题解

简介: leetcode209题解

LC209

给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的
子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

class Solution {
   
public:
    int minSubArrayLen(int target, vector<int>& nums) {
   
        //定义两个下标当做一对同向双指针
        int left = 0, right = 0;
        int size = nums.size();
        int sum = 0;
        int len = 0, min_len = INT_MAX;
        //left在开头位置不动,先是right向后走
        for(right = 0; right < size; right++)
        {
   
            //将遍历到的值放进sum中
            sum += nums[right];
            //当sum>=target时就不必再让right向后遍历
            while(sum >= target)
            {
   
                //计算当时的长度
                len = right - left + 1;
                //更新最小长度
                min_len = min(len, min_len);
                //sum达到target的值的时候就让sum减去left当前位置的值,然后让left向前一步
                sum -= nums[left++];
            }
        }

        return min_len == INT_MAX ? 0 : min_len;
    }
};

目录
相关文章
|
6月前
|
存储
leetcode2题解
Leetcode2两数相加的题解
25 2
|
6月前
leetcode3题解
leetcode3的题解
23 1
|
6月前
|
算法
leetcode4题解
leetcode4题解
28 0
Leetcode contests 93 题解
870. Advantage Shuffle 起始就是hdoj 1502田忌赛马,但要求的结果不一样而已。这里我用了个pair来记录B中每个数字对应的位置。
47 0
|
数据安全/隐私保护
[FlareOn5]FLEGGO 题解
[FlareOn5]FLEGGO 题解
57 1
Leetcode contests 95 题解
用容斥原理可以计算出一个数字Num之下有多少个A或B的倍数cnt,我们从最大值二分这个数字Num,拿cnt和N做比较来决定二分的走向,最终l和r肯定会收敛到一起,这就是我们要的结果了。 这道题的数值范围不是特别大 ,用long就可以完全满足需求了。
25 0
|
数据安全/隐私保护
[FlareOn6]Overlong 题解
[FlareOn6]Overlong 题解
99 0
|
Go 数据安全/隐私保护
世上无难事题解
世上无难事题解
88 0
世上无难事题解
|
算法
rsarsa题解
rsarsa题解
140 0
rsarsa题解