algorithm - 查找数组中的数字对,所有对都给出相同的总和

标签 algorithm review

假设有一个大小为 N 的数组(N 总是偶数)。给定数组的所有元素形成一对,添加时给出相同的和。求和。这绝对不是作业。例如:

A = {1,4,3,2,5,6,8,7} 。 ans = 9 因为 { (1,8) , (2,7) , (3,6) , (4,5) } 形成和 9 的对。

也可以有重复项。 B = {3,4,5,3,4,5}。回答 = 8

我试过的是

1) 对数组进行排序 = O(nlogn)。

2) 找到排序数组的最小值和最大值之和。这是所需的总和,因为如果不是这 2 个,则至少会有一对不能由相同的总和组成。希望我清楚。

现在我的问题是,这能否以某种方式在线性时间内完成?直接散列数字是不够的,因为事先不知道“总和”。

最佳答案

O(n) 时间遍历一组数字以找到最小值和最大值并将所有数字放入哈希表中。计算目标总和 t = max + min。然后让第二次 O(n) 次通过数字集;对于数字 x,计算 y = t-x,在哈希表中查找 y,如果找到,则报告该对。关于重复,您还可以在哈希表中保留数字计数。

关于algorithm - 查找数组中的数字对,所有对都给出相同的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907265/

相关文章:

algorithm - 在视频中找到有趣的帧

django - Django 或任何其他 Python 框架中的开源客户评论系统

windows-phone-7 - WP7 了解用户是否对应用程序进行了评分或评论

algorithm - 航类票价的 TSP

algorithm - 高度为 h 的节点数是多少?

java - 贪心算法给出可疑结果

algorithm - 使用排列组合遍历 N*N 矩阵的方法数

wordpress - 我想按产品ID获得woocommerce评论并将其显示在模板中

ios - 用于在应用程序内留下 iTunes 评论的 API

ios - 审核通过后,发布计划状态为“待开发人员发布”的应用程序吗?