在 JavaScript 中具有所需总和的三元组

我们需要编写一个 JavaScript 函数,它接受一个数字数组作为第一个参数,一个数字作为第二个参数。该函数应准备并返回所有此类三元组(连续或非连续)的数组,这些三元组的总和为第二个参数指定的数字。

例如 -

如果输入数组和数字是 -

const arr = [4, 2, 0, 1, 2, 6, 8, 3, 2, 5];

const num = 8;

那么输出数组应该是 -

const output = [ [ 2, 2, 4 ], [ 1, 3, 4 ], [ 0, 2, 6 ], [ 1, 2, 5 ] ];

示例

以下是代码 -

const arr = [4, 2, 0, 1, 2, 6, 8, 3, 2, 5];

const num = 8;

const tripletSum = (arr, num) => {

   if (arr.length === 3) {

      if (arr[0]+arr[1]+arr[2] === 0) {

         return [[arr[0],arr[1],arr[2]]];

      };

   };

   const results = [];

   const hashMap = {};

   for (var i=0; i<arr.length; i++) {

      for (var j=i+1; j<arr.length; j++) {

         for (var k=j+1; k<arr.length; k++) {

            if (arr[i]+arr[j]+arr[k] === num) {

               if (!hashMap[arr[i]*arr[j]*arr[k]]) {

                  results.push([arr[i],arr[j],arr[k]]);

                  results[results.length-1].sort();

                  hashMap[arr[i]*arr[j]*arr[k]] = true;

               }

            }

         }

      }

   }

   return results;

};

console.log(tripletSum(arr, num));

输出结果

以下是控制台输出 -

[ [ 2, 2, 4 ], [ 1, 3, 4 ], [ 0, 2, 6 ], [ 1, 2, 5 ] ]

以上是 在 JavaScript 中具有所需总和的三元组 的全部内容, 来源链接: utcz.com/z/350519.html

回到顶部