小编典典

在未排序的数组中找到一对差值是输入值“ k”的数字对

algorithm

如标题中所述,我想找到差异为 K* 的成对元素 *

example k=4 and a[]={7 ,6 23,19,10,11,9,3,15}
output should be :
   7,11
   7,3
   6,10
   19,23
   15,19
   15,11

为了找到有效的解决方案,需要多少时间?是时间复杂度O(nlogn)还是O(n)?我试图通过分而治之的方法来做到这一点,但我没有任何退出条件的线索…

如果一个有效的解决方案包括使用两个指针对输入数组和操作元素进行排序,那么我认为我应该尽量减少O(nlogn)

有任何与数学有关的技术可以解决问题O(n)。任何帮助表示赞赏。


阅读 295

收藏
2020-07-28

共1个答案

小编典典

您可以使用哈希表在O(n)中执行此操作。将所有数字放在O(n)的哈希中,然后再次遍历它们以寻找number[i]+k。哈希表在O(1)中返回“是”或“否”,并且您需要遍历所有数字,因此总数为O(n)。具有O(1)设置和O(1)检查时间的任何集合结构都可以代替哈希表工作。

2020-07-28