57 is inscribed: a continuous and positive sequence s

Abstract double pointer

class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
        vector<vector<int>>res;
        if(target<0)return res;
        int small=1,big=2;
        int middle=(1+target)/2;//small的最大数,一个sum如果最小的为sum的一半,那么再加是不可能比sum相等的了
        int currSum=small+big;
        while(small<middle)
        {
            if(currSum==target)
            {
                vector<int>temp;
                for(int i=small;i<=big;++i)
                    temp.push_back(i);
                res.push_back(temp);
            }
            if(currSum<target)
            {   
                 big++;
                 currSum+=big;
            }
            else
            { 
                currSum-=small;
                small++;
            }
        }
        return res;
    }
};
Published 107 original articles · won praise 28 · views 1937

Guess you like

Origin blog.csdn.net/qq_38994205/article/details/104877993