美文网首页
LC209 Minimum Size Subarray Sum

LC209 Minimum Size Subarray Sum

作者: Rookie118 | 来源:发表于2020-06-28 19:23 被阅读0次

本题链接:Minimum Size Subarray Sum

本题标签:ArrayTwo PointersBinary Search

本题难度:\color{Orange}{Medium}

英文题目 中文题目

方案1:

利用双指针构造一个不断改变大小的滑动窗口。用left代表窗口的左边,right代表窗口的右边。先不断向右移动right,累加窗口内的数字和sum;当sum大于s时,不断向右移动left,减去left所指的数字并求出此时窗口的最小长度,直到sum小于s;最后right遍历完nums时,在判断最小长度min_len是否等于INT_MAX,等于则说明不存在符合条件的连续子数组,否则返回min_len。

class Solution {
public:
    int minSubArrayLen(int s, vector<int>& nums) {
        
        int min_len = INT_MAX, sum = 0;
        int left = 0, right = 0;
        
        while(right < nums.size())
        {
            sum += nums[right];
            while(sum >= s)
            {
                min_len = min(min_len, right - left + 1);
                sum -= nums[left];
                ++left;
            }
            ++right;
        }
        return min_len == INT_MAX ? 0 : min_len;
    }
};

时间复杂度:O ( N )

空间复杂度:O ( 1 )


方案2:

相关文章

网友评论

      本文标题:LC209 Minimum Size Subarray Sum

      本文链接:https://www.haomeiwen.com/subject/xbzwfktx.html