您的位置:首页 > 其它

Minimum Size Subarray Sum 滑动窗口移位

2015-06-09 14:07 274 查看


Minimum Size Subarray Sum

Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s.
If there isn't one, return 0 instead.
For example, given the array
[2,3,1,2,4,3]
and
s
 = 7
,

the subarray
[4,3]
has the minimal length under the problem constraint.
click to show more practice.

class Solution {
public:
    int minSubArrayLen(int s, vector<int>& nums) {
        
        if(nums.size()==0)
            return 0;
        int left,right,sum,minLen=9999999;
        
        sum=0;
        for(left=0,right=0;right<nums.size();)
        {
            while(sum<s&&right<nums.size())
            {
                sum+=nums[right];
                right++;
            }
            if(sum>=s&&right-left<minLen)
            {
                minLen=right-left;
            }
            while(sum>=s)
            {
                sum-=nums[left];
                left++;
                if(sum>=s&&right-left<minLen)
                {
                    minLen=right-left;
                }
            }
        }
        if(minLen==9999999)  
            return 0;
        return minLen;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: