leetcode-和为s的连续正数序列

193 阅读1分钟
  1. 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
  2. 解题思路:
    (1)用两个数字left和right分别表示序列的最小值和最大值,
    (2)首先将left初始化为1,right初始化为2,
    (3)如果从left到right的和大于sum,我们就从序列中去掉较小的值(即增大left), 相反,只需要增大right。
    (4)终止条件left>=right
  3. function findContinueSequence(sum){    var left = 1,right = 2;    var resArr = [],cur;    while(left<right){        cur = (left+right)*(right-left+1)/2;        if(cur<sum){            right++;        }        if(cur>sum){            left++;        }        if(cur==sum){            var fln = [];            for(let i = left; i<=right; i++){                fln.push(i);            }            resArr.push(fln);            left++;        }    }    console.log(resArr);    return resArr;}findContinueSequence(9);