leetcode 829 连续整数求和

leetcode 829 连续整数求和

Q: 给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?

思路:
假设有 K,我们需要满足满足 N = (x+1)+ (x+2) + … + (x+k)即可
即 N = k*x + k(k+1)/2
即 N-k+1)/2 能够被 k整除

假设现在

// 如果暴力做的话 O(n) 面试官通常会
// 假设有 K项 满足 N = (x+1)+ (x+2) + ... + (x+k) 即可
class Solution {
public:
    int consecutiveNumbersSum(int N) {
            int result  = 0;
            for (int k =1; k*(k+1)<=2*N; k++)
            {
                if((N - k*(k+1)/2) % k == 0) result++;
            }
            return result;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值