Lc-829 829. Consecutive Numbers Sum 题目大意: 给定一个正整数N,问有多少种连续整数的组合相加为N。 for example:N = 5, 5 = 5 = 2 + 3, so answer is 2 解题思路: 首先,最小的两个连续正整数相加1+2=3, 大点的就是2+3=5=1+2+2,再大点3+4=7=2+3+2=1+2+(2+2), 从中可以看出如果存在两个连续正整数之和等于N, 那么必然N=1+2+2k(k为正整数),N-(1+2)可以整除2,即(N-(1+2))%2 == 0. 往下推,n个连续正整数就是,(N-(1+2+...+n))%n == 0 注意: None 复杂度: Time Complexity: Space Complexity: Code示例: class Solution { public int consecutiveNumbersSum(int N) { int ans = 1, sum = 1; //一个连续正整数即N本身,我们从2开始逐一判断,true则加1 for (int i = 2; (sum+=i)<=N; i++) { if ((N-sum) % i == 0) ans++; } return ans; } }