在Javascript中,还有其他有效的方法来实现此任务吗?
我尝试的身份是:
const a1 = [1,3,4,2,5,7,8,6];
var newArray =[];
function fun(a,n){
for(let i = 0; i<a.length; i++){
for(let j=i+1; j<a.length; j++){
if((a[i]+a[j])==n){
newArray.push([a[i],a[j]]);
}
}
}
}
fun(a1, 10)
console.log(newArray);
这里输出:
[(3,7),(4,6),(2,8)]
这是一个通常称为“二和问题”的一般编程问题,它本身是子集和问题的子集。但无论如何都可以有效地解决,我用这篇文章作为灵感。
js lang-js prettyprint-override">const a1 = [1, 3, 4, 2, 5, 7, 8, 6];
// our two sum function which will return
// all pairs in the array that sum up to S
function twoSum(arr, S) {
const sums = [];
const hashMap = new Map();
// check each element in array
for (let i = 0; i < arr.length; i++) {
// calculate S - current element
let sumMinusElement = S - arr[i];
// check if this number exists in hash map
// if so then we found a pair of numbers that sum to S
if (hashMap.has(sumMinusElement.toString())) {
sums.push([arr[i], sumMinusElement]);
}
// add the current number to the hash map
hashMap.set(arr[i].toString(), arr[i])
}
// return all pairs of integers that sum to S
return sums;
}
console.log(twoSum(a1, 10))
这个问题被标记为javascript,但这个答案基本上与语言无关。
如果数组已排序(或者您可以对其进行排序),您可以遍历数组并为其中的每个元素x在数组中二进制搜索(目标-x)。这为您提供了O(nlogn)运行时间。
如果可以使用额外内存,可以使用数组的元素填充字典,然后针对数组中的每个元素x,在字典中查找(target-x)。如果您的字典是在哈希表上实现的,那么这将为您提供O(n)运行时间。
我正在进行JavaScript会话。在我的编码练习中找到此代码。我理解逻辑,但我没有得到这个map[nums[x]]条件。 我试图从一个指定的数组中获取元素对,该数组的和等于一个特定的目标数。我已经写了下面的代码。 有没有比上述两种解决方案更优化的方法?有人能解释第一种解决方案吗?这个条件到底指的是什么映射[nums[x]]?
问题内容: 给定一个数组,我们需要找到总和等于数字 X 的所有对。 例如: 问题答案: 解决方案1: 您可以检查每一对数字,并找到总和等于 X。 Java 代码: 解决方案2: 对数组进行排序 * 我们将维护两个索引,一个在开头(l=0),一个在结尾(r=n-1) * 迭代直到 l < r * 检查 arr[l] + arr[r] 是否等于 X * 如果是,则打印该对并执行 l , r– * 如果
本文向大家介绍从三个链表中查找一个三元组,其总和等于C ++中的给定数字,包括了从三个链表中查找一个三元组,其总和等于C ++中的给定数字的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,该程序在链表中查找三元组,其总和等于给定的数字。 让我们看看解决问题的步骤。 为链表创建一个struct节点。 用伪数据创建链接列表。 为三个元素编写三个内部循环,这些循环将迭代直到链接列
如果给定的和等于数组中任意两个元素的和,函数需要返回true;否则函数需要返回false。
我在一次采访中被问到以下问题。虽然我用n元树回答了这个问题,但有人告诉我这还不够好。所以,我很好奇,什么是它的最佳解决方案。 输入:整数数组:[2,3,7]和总和:10 输出:加起来等于和的所有数组元素组合(例如2、2、3、3、7等) 谢了小泰
问题陈述 任务是检查在长度为N的数组中是否存在K个元素的非连续子数组,其总和等于给定的总和。 例如, 长度为 3 且 sum=7 的非连续子数组为 [1,2,4]。 限制条件: 输出 如果存在 sum=TargetSum 的子数组,我们必须返回 True,如果不可能,则必须返回 False。