如何在 JavaScript 中找到数组中三个元素的组合,使其和等于目标值
我们必须编写一个函数,例如 threeSum(),它接收一个数字数组和一个目标和作为输入。它检查数组中是否存在三个数字的和等于目标和,如果数组中存在这样的三个数字,则应返回它们的索引数组,否则应返回 -1。
方法
方法很简单,我们首先编写一个函数 twoSum(),它接收一个数组和一个目标和作为输入,并以线性时间和空间复杂度返回两个数字的索引,这两个数字的和等于目标和,否则返回 -1。
然后我们编写实际函数 threeSum(),它遍历数组中的每个元素,以查找第三个元素的索引,当将其与 twoSum() 的结果相加时,可以达到实际的目标值。
因此,我们可以用 O(N^2) 的时间复杂度找到这三个元素。让我们为此编写代码:
示例
const arr = [1,2,3,4,5,6,7,8];
const twoSum = (arr, sum) => {
const map = {};
for(let i = 0; i < arr.length; i++){
if(map[sum-arr[i]]){
return [map[sum-arr[i]], i];
};
map[arr[i]] = i;
};
return -1;
};
const threeSum = (arr, sum) => {
for(let i = 0; i < arr.length; i++){
const indices = twoSum(arr, sum-arr[i]);
if(indices !== -1 && !indices.includes(i)){
return [i, ...indices];
};
};
return -1;
};
console.log(threeSum(arr, 9));
console.log(threeSum(arr, 8));
console.log(threeSum(arr, 13));
console.log(threeSum(arr, 23));输出
控制台输出将是:
[ 0, 2, 4 ] [ 0, 2, 3 ] [ 0, 4, 6 ] -1
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP