gpt4 book ai didi

配对查找算法的javascript优化

转载 作者:行者123 更新时间:2023-11-29 10:31:46 24 4
gpt4 key购买 nike

我正在研究一个 javascript 函数,它接受一个整数数组和一个目标作为参数。任务是在数组中找到第一对整数,其总和等于目标。我已经尝试了几种不同的方法,但对于较大的输入数组,我不断收到超时错误。有人可以给我一些关于如何更好地优化这段代码的建议吗?谢谢!

var sum_pairs = function(ints, s){
var r = [];
var a = true;
var l = ints.length;
for(var j = 0; j < l; j++){
if(a){
for(var i = 0; i < j; i++){
if(ints[j] + ints[i] == s){
r[0] = ints[i];
r[1] = ints[j];
a = false;
break;
}
}
}
else{
console.log('breaking');
break;
}
}
return r[0] == null ? null : r;
}

最佳答案

你可以使用一些加速机制,比如

  • 单循环,
  • 访问值的哈希表
  • 变量 a 用于元素 array[i]
  • 非常短的变量名(开玩笑)

Long list需要 153 毫秒

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

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

console.log(sum_pairs([11, 3, 7, 5], 10)); // [3, 7]
console.log(sum_pairs([4, 3, 2, 3, 4], 6)); // [4, 2]
console.log(sum_pairs([0, 0, -2, 3], 2)); // undefined
console.log(sum_pairs([10, 5, 2, 3, 7, 5], 10)); // [3, 7]
console.log(sum_pairs([1, 2, 3, 4, 1, 0], 2)); // [1, 1]
console.log(sum_pairs([1, -2, 3, 0, -6, 1], -6)); // [0, -6]
console.log(sum_pairs([0, 2, 0], 0)); // [0, 0]
console.log(sum_pairs([5, 9, 13, -3], 10)); // [13, -3]
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于配对查找算法的javascript优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44444776/

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