在 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 -- // making sure 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 ] ]
广告