algorithm - 最接近数字集的数字

标签 algorithm data-structures time-complexity

假设我们有一组数字 P = { p1, p2, p3, ..., pn } ( length(P) = n ) 和选择一个数字作为 q。所以我想找到一个算法来获取集合 Pq 最近的成员。所以问题是:什么结构适合保存数据(p1, p2, ...)和算法以在 O(1) 中找到 P 到 q 的最近成员时间复杂度。

最佳答案

  1. 您无法获得 O(1) 的复杂度。通过使用 van Emde Boas 树,最接近的是 O(lg lg n)。
  2. 如果集合是静态的,使用排序向量和二进制搜索 (O(lg n)) 找到最近的元素。
  3. 如果集合可以在查询之间更改,请使用适当的数据结构来维护动态集合(例如,AVL 或红黑树)。

关于algorithm - 最接近数字集的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262641/

相关文章:

java - 求二维数组中 1 的最大个数

java - 为什么 Char 变量在没有声明 char 数组的情况下存储堆栈的过去值?看到代码了吗?

c++ - 非大 O 复杂性

string - VBA 的字符串比较算法是什么?

algorithm - 如何使用go识别给定号码的匹配模式?

c# - 找到超速的时期?

data-structures - 有向图中两个顶点之间的循环

algorithm - 我怎样才能使这个算法更有效率?

python - 跨多个维度的 Top-k 评分

algorithm - 计算递归算法的时间复杂度