209. Minimum Size Subarray Sum

来源:互联网 发布:连锁店软件 编辑:程序博客网 时间:2024/06/05 03:28
//4ms 类似两个游标,找到大于s的sum后left右移,未找到的话right左移class Solution {public:    int minSubArrayLen(int s, vector<int>& nums) {        if(nums.size()==0||(nums.size()==1&&nums[0]<s)) return 0;        int i=0,j=0,res=INT_MAX;        int sum=nums[0];        while(j<nums.size())        {            if(sum>=s)            {                res=min(res,j-i+1);                if(res==1) return 1;                sum-=nums[i++];            }            else            {                j++;                if(j<nums.size()) sum+=nums[j];            }        }        if(res==INT_MAX) return 0;        return res;    }};
//ac 420msclass Solution {public:    int minSubArrayLen(int s, vector<int>& nums) {        int sum=0;        for(int j=0;j<nums.size();j++)         {            if(nums[j]>=s) return 1;            sum+=nums[j];        }        if(sum<s) return 0;        vector<int>  n=nums;        for(int i=1;i<nums.size()-1;i++)        {            for(int j=0;i+j<nums.size();j++)            {                n[j]+=nums[j+i];                if(n[j]>=s) return i+1;            }                    }        return nums.size();    }};
0 0