前端小白---学习之旅

思路解析(组合求和)

数组元素 [1,2,3,4,6] 目标: 7
成立:[3,4]
成立:[1,2,4]
思路:目标减去 - 任意组合 = 0 // 则成立


代码

  function combinatorialSum(
     targetArr, // 数列
     targetsum, // 目标数组
     generatearr = [], // 生成的数组
     combination = []) 
  {
      if (targetsum < 0) return;
      
      if (targetsum === 0) {
         // 此时 combination 虽然可以打印出值 但是由于是地址引用 所以它会返回之前的长度 但是会返回修改后的结果
         // combination.slice() || [... combination]
          generatearr.push(combination.slice())
          return generatearr;
      }
            // 遍历这个数组 targetArr
      for (let i = 0; i < targetArr.length; i++) {
          const item = targetArr[i];
          combination.push(targetArr[i]);
          combinatorialSum(targetArr, targetsum - item, generatearr, combination);
          combination.pop();
      }
      return generatearr;

}

焦振
9 声望0 粉丝

前端工程师


« 上一篇
git常用命令