和为S的连续正数序列
和为S的连续正数序列
http://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe
思路
从1开始累加,相等则加入结果数组中。去除前两个(因为是升序,去除第2个最小的比较合理),重新开始下一轮。
代码
function FindContinuousSequence(sum) { // write code here var resArr = []; var cur = []; // 存储当前序列 var total = 0; // 计算当前总和 for(var i=1;i<sum;i++){ total += i; cur.push(i); // 总和大于sum,则去除头部 while(total > sum){ total -= cur.shift(); } if(total == sum){ resArr.push(cur); // 找到一个序列后,去除前两个,开始下一轮 total -= cur[0]; total -= cur[1]; cur = cur.slice(2); } } return resArr; }