题目描述
blablabla
样例
blablabla
算法1
(枚举因子) $O(n^2)$
通过等差数列求和公式可以得出项数一定是 $2S$ 的因子,枚举 $2S$ 的因子即可求出满足条件的所有等差数列的首项和项数。
抛开输出,枚举因子的时间复杂度为 $\sqrt{S}$
时间复杂度
参考文献
C++ 代码
class Solution {
public:
vector<vector<int> > findContinuousSequence(int sum) {
vector<vector<int>> ans;
vector<int> factor;
int tmp = 2 * sum;
for (int i = 2; i * i <= tmp; ++ i) {
if ((tmp - i * i + i) % (2 * i) != 0) {
continue;
}
int a = (tmp - i * i + i) / (2 * i);
vector<int> res;
for (int j = 0; j < i; ++ j) {
res.push_back(a + j);
}
ans.push_back(res);
}
return ans;
}
};