如何在数组中找到一组三个元素,其总和等于某个目标总和 JavaScript
javascriptweb developmentobject oriented programming更新于 2025/10/8 22:36:17
我们必须编写一个函数,比如 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
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

