枚举解题思路:
1.主要在于变量n枚举分成几个,是偶数个还是奇数个。分成奇数个时要满足n%i的余数为0,结果的商为分成后的中位数,分成偶数个时要满足n%i的余数为i/2,结果的商为中位数中的前面一位。这样可以平衡值,从而达到分成的值为连续的整数。
class Solution {
public int consecutiveNumbersSum(int n) {
//计数的变量
int size=0;
//把变量n分成几个,先分成1个之后再分成2个或3个等等几组,
//但是分组时要满足一些条件,比如分成奇数时余数要为0,
//分成偶数时余数要是偶数值的一半。
for(int i=1;i*(i+1)<=2*n;i++){
//分成偶数时
if(i%2==0&&n%i==i/2){
size++;
}
//分成奇数时
if(i%2==1&&n%i==0){
size++;
}
}
return size;
}
}