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;
    }
};

目录
相关文章
|
1月前
【LeetCode 02】暴力法总结
【LeetCode 02】暴力法总结
15 1
|
3月前
|
算法
LeetCode第66题加一
LeetCode第66题"加一"的解题方法,通过遍历数组从后向前处理每一位的加法,并考虑进位情况,最终实现给定数字加一的功能。
LeetCode第66题加一
|
6月前
|
算法
leetcode:389. 找不同
leetcode:389. 找不同
28 0
|
6月前
|
Java
leetcode-474:一和零
leetcode-474:一和零
39 0
|
6月前
|
消息中间件 Kubernetes NoSQL
LeetCode 1359、1360
LeetCode 1359、1360
LeetCode 389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
72 0
|
算法 Python
LeetCode 386. Lexicographical Numbers
给定一个整数 n, 返回从 1 到 n 的字典顺序。
84 0
LeetCode 386. Lexicographical Numbers
|
C++ Python
LeetCode 771. Jewels and Stones
LeetCode 771. Jewels and Stones
80 0
|
算法
leetcode第47题
基本上都是在上道题的基础上改出来了,一些技巧也是经常遇到,比如先排序,然后判断和前一个是否重复。利用 Hash 去重的功能。利用原来的存储空间隐藏掉数据,然后再想办法还原。
leetcode第47题