和为S的连续正数序列
和为S的连续正数序列
http://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe
既然是数学问题,那么就用数学的方法来解决(笑)
无非就是一个等差数列求和的问题
等差数列求和公式:
其中:
代入可得: 并且
满足正数的条件,所以
可得:
算法复杂度:
接下来就可以愉快地写代码啦:
function FindContinuousSequence(sum)
{
const res = [];
if(sum <= 0) return res;
let n=2, x0, each;
while(n**2 + n <= 2*sum){
x0 = (2*sum + n - n**2) / (2*n);
if(Math.floor(x0) === x0){
each = [];
for(let i=0; i<n; ++i) each.push(x0+i);
res.push(each);
}
++n;
}
return res.sort((a, b) => a[0]-b[0]);
}
三奇智元机器人科技有限公司公司福利 70人发布
查看7道真题和解析