classSolution {
publicintconsecutiveNumbersSum(int n) {
intres=0;
n *= 2;
for(intk=1; k * k < n; k++) {
if(n % k != 0)
continue;
if((n / k - (k - 1)) % 2 == 0)
res++;
}
return res;
}
}
时间复杂度:O(2n)
空间复杂度:O(1)
C++
class Solution {
public:
int consecutiveNumbersSum(int n) {
int res = 0;
n *= 2;
for(int k = 1; k * k < n; k++) {
if(n % k != 0)
continue;
if((n / k - (k - 1)) % 2 == 0)
res++;
}
return res;
}
};
implSolution {
pubfnconsecutive_numbers_sum(n: i32) ->i32 {
letmut res = 0;
letmut k = 1;
letmut n = n;
while n > 0 {
n -= k;
if n % k == 0 {
res += 1;
}
k += 1;
}
res
}
}