在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 ] ]
热门推荐
8 带马的祝福语简短
10 少儿春节祝福语简短精辟
11 分别祝福语简短情话英文
12 周末祝福语简短有内涵
13 经典新婚祝福语简短英文
14 情侣520的祝福语简短
15 关于健康的祝福语简短
16 圣诞祝福语简短贺卡英文
17 作文老师寄语简短祝福语
18 钢琴获奖老师祝福语简短