arrays - 2 个未排序的数组,查找是否有任何一对值加起来等于目标?

标签 arrays algorithm

所以给定 2 个未排序的数组,我必须找出是否有任何一对值(每个数组中有 1 个)加起来等于目标。

在 javascript 中,我所做的是从 array1 中找到最大值和最小值,然后创建一个大小为 maxVal-minVal 的数组。

然后我遍历 array1 并在新数组的每个与 array1 的值相对应的索引处放置一个 1。

从那时起,我遍历 array2 并检查是否 newArray[ target - array2[i] ] == 1

这是解决这个问题的好方法吗?

最佳答案

是的,就速度而言,这是一个很好的解决方案。然而,就空间而言,这不是一个很好的解决方案,因为

make an array of size maxVal-minVal

maxVal-minVal 很大时,比如数亿,您需要分配和零初始化一个非常大的数组。如果两组数比较少,比如几千项,初始化数组的时间可能会超过求解的时间。

更好的方法是使用基于散列的集合容器代替数组,因为您可以在不进行任何更改的情况下运行算法,而内存要求为 O(N) 而不是 O(maxVal-minVal)。

在 JavaScript 中,一个 object can be used as a hash-based container .

关于arrays - 2 个未排序的数组,查找是否有任何一对值加起来等于目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149209/

相关文章:

java - 如何使用keyboard.next().charAt(0)将值存储到数组?在java中

php - 将最后查询的关键字保存到数组或数据库中以显示最后一个

c++ - 在数组中一次分配整个结构

algorithm - NP-硬解题

python - 总和等于 0 的最大子数组

java - 根据条件获取 vector 索引位置

algorithm - 无向图可以有自环吗?

algorithm - 递归关系,算法

java - 排序 "plain-list-tree-structure"的算法

javascript - 无法读取数据数组。获取: Uncaught Error: Unknown type of column header: 1