美文网首页
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