一起来刷算法题

和为S的连续正数序列

2019-05-06  本文已影响0人  cherryleechen

时间限制:1秒 空间限制:32768K

题目描述

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。

我的代码

class Solution {
public:
    vector<vector<int> > FindContinuousSequence(int sum) {
        vector<vector<int>> res;
        if(sum<3)
            return res;
        sum<<=1;
        int k,l;
        for(k=int(sqrt(sum))+1;k<sum;k++){
            if(sum%k==0){
                l=sum/k;
                if((k+l)%2==1){
                    int start=(k-l+1)/2;
                    int end=(k+l-1)/2;
                    vector<int> tmp;
                    for(int i=start;i<=end;i++)
                        tmp.push_back(i);
                    res.push_back(tmp);
                }
            }
        }
        return res;
    }
};

运行时间:4ms
占用内存:476k

上一篇下一篇

猜你喜欢

热点阅读