返回题库

连续整数求和

Consecutive Numbers Sum

专题
Algorithmic Programming / 算法编程
难度
L4
来源
Citadel

题目详情

问题:连续整数求和

考察:数组

来源:Citadel

链接:https://www.jointaro.com/interviews/questions/consecutive-numbers-sum/

Given an integer n, return the number of ways you can write n as the sum of consecutive positive integers.

 

Example 1:

Input: n = 5
Output: 2
Explanation: 5 = 2 + 3

Example 2:

Input: n = 9
Output: 3
Explanation: 9 = 4 + 5 = 2 + 3 + 4

Example 3:

Input: n = 15
Output: 4
Explanation: 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5

 

Constraints:

  • 1 <= n <= 109
解析

思路:设 N 表示为 k 个连续正整数,首项 a 满足 N = k(2a+k-1)/2。枚举长度 k,只要 N - k(k-1)/2 能被 k 整除且首项为正,就是一种表示。

复杂度:枚举到 k(k+1)/2 <= N,时间 O(sqrt(N)),空间 O(1)。