字节跳动经典算法题

  • 输入一个正数N,输出所有和为N的连续正数序列
  • 例如:输入15
  • 结果:[[1,2,3,4,5],[4,5,6],[7,8]]

在这里插入图片描述

//从N开始,连续M个正数序列的和
function fn(count){
  let result = [];
  let middle = Math.ceil(count/2)
    for(let i = 1;i<=middle;i++){
    for(let j = 2;;j++){    //j累加次数
      let total = (i+(i+j-1))*j/2   //连续数只之和公式,首项➕尾项  乘以项数  除以2
      if(total>count){
        break;
      }else if(total === count){
        result.push(createArr(i,j))
        break;
      }
    }
    }
    return result;
}

function createArr(n,len){
  let arr = new Array(len).fill(null);
  arr[0] = n;
  arr = arr.map((item,index)=>{
    return n+index
  })
  return arr;
}

results matching ""

    No results matching ""