gpt4 book ai didi

javascript - 编写 sum_pairs 函数的更简单方法

转载 作者:行者123 更新时间:2023-12-02 06:47:30 26 4
gpt4 key购买 nike

我希望有人向我展示一种更简单的方法来编写我的 sum_pairs(arr,sum) 函数,该函数返回 arr 中的前 2 个值,加起来形成 总和。我的代码有效,但我认为它很复杂,我需要有人来简化它。所以,这是我的代码。

function sum_pairs(ints,s){
let arr=[];
let arrOfIndex=[];
for(let i=0;i<ints.length;i++){
for(let a=0;a<ints.length;a++){
if(a!=i){
if(ints[i]+ints[a]==s){
let newArr=[ints[i],ints[a]];
let sumIndex=i+a;
arr.push(newArr);
arrOfIndex.push(sumIndex);
}
}
}
}
let sortedArray=arrOfIndex.sort((a,b)=>a-b);
return arr[arrOfIndex.indexOf(sortedArray[0])];
}

console.log(sum_pairs([7,2,5,8,4,3],7))//[2,5]

最佳答案

您可以对第二对元素使用哈希表进行单循环。

它通过查找实际值来工作,如果找到,则该值是一对的一部分。在这种情况下,返回总和与值和值的增量。

如果没有找到,则在哈希表中添加一个新条目,其中包含缺失值以获得总和。

继续进行直到找到或结束。

function sum_pairs(ints, s) {
var hash = Object.create(null),
i,
value;

for (i = 0; i < ints.length; i++) {
value = ints[i];
if (hash[value]) return [s - value, value];
hash[s - value] = true;
}
}

console.log(sum_pairs([7, 2, 5, 8, 4, 3], 7));

所有对(带有不重复的数组)

function allPairs(ints, s) {
var hash = Object.create(null),
i,
value,
pairs = [];

for (i = 0; i < ints.length; i++) {
value = ints[i];
if (hash[value]) pairs.push([s - value, value]);
hash[s - value] = true;
}
return pairs;
}

console.log(allPairs([7, 2, 5, 8, 4, 3], 7));

最后也找到了重复的对:-)

function allPairs(ints, s) {
var hash = Object.create(null),
i,
value,
pairs = [];

for (i = 0; i < ints.length; i++) {
value = ints[i];
if (hash[value]) {
pairs.push([s - value, value]);
hash[value]--;
continue;
}
if (!hash[s - value]) {
hash[s - value] = 0;
}
++hash[s - value];
}
return pairs;
}

console.log(allPairs([4, 3, 3, 4, 7, 2, 5, 8, 3], 7));

关于javascript - 编写 sum_pairs 函数的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54130644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com