力扣:829. 连续整数求和

枚举解题思路:

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;
    }
}

你可能感兴趣的:(枚举,leetcode,算法)