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 ] ]

更新於: 19-Jan-2021

241 次瀏覽

開啟你的 事業

透過完成課程獲得認證

開始學習
廣告