在JavaScript的数组中查找具有所需总和的三个元素

我们需要编写一个JavaScript函数,该函数将数字数组作为第一个参数,并将单个数字作为第二个参数。然后,该函数应从数组中选择三个这样的数字(如果存在),它们的总和等于第二个参数指定的数字。

该函数最终应返回所有三元组(如果存在)的数组数组,否则返回空数组。

例如-

如果输入数组和数字为-

const arr = [2, 5, 7, 8, 9, 11, 1, 6];

const sum = 22;

那么输出应该是-

const output = [ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ];

示例

为此的代码将是-

const arr = [2, 5, 7, 8, 9, 11, 1, 6];

const sum = 22;

const threeSum = (arr = [], sum) => {

   arr.sort((a,b) => a - b);

   const res = [];

   for(let i=0; i <arr.length- 2; i++){

      if(arr[i] != arr[i-1]){

         let left = i + 1;

         let right =arr.length- 1;

         while (left < right){

            const curr = arr[i] + arr[left] + arr[right];

            if (curr === sum){

               res.push([arr[i], arr[left], arr[right]]);

               while(arr[left] == arr[left + 1]) left ++

               while(arr[right] == arr[right - 1]) right -- // 确保

               our solution set does not contain duplicate res

               left ++;

               right --;

            } else if(curr < sum) {

               left ++

            } else if(curr > sum){

               right --

            };

         };

      };

   };

   return res

};

console.log(threeSum(arr, sum));

输出结果

控制台中的输出将是-

[ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ]

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

回到顶部