与一组数字最接近的数字
假设我们有一组数字 P = { p1, p2, p3, ..., pn }
( length(P) = n
) 并选择一个数字如q
。所以我想找到一种算法来获取集合P
中距离q
最近的成员。所以问题是:什么结构适合保存数据(p1, p2, ...
)和算法以在O(1)
中找到 P 到 q 最近的成员时间复杂度。
Suppose that we have a set of number as P = { p1, p2, p3, ..., pn }
( length(P) = n
) and choose a number as q
. So I want to find an algorithm to get the nearest member of set P
to q
. So the question is: What structure is appropriate to keep data ( p1, p2, ...
) and algorithms to find nearest member of P to q in O(1)
time complexity.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我能想到获得
O(1)
时间复杂度的唯一方法是使用O(pn)
空间和O(pn)
对 P 进行预排序并在pn
大小的数组中分配值的时间。预排序
P
,因此p1
是最小值,pn
是最大值(我假设它们是整数。)然后存储在大小为 < 的数组中code>(pn-p1+1) 值:那么您只需检查某个
q
即可:The only way I can think of getting
O(1)
time complexity is if you can useO(pn)
space andO(pn)
time to preorder P and allocate values in apn
size array.Preorder
P
sop1
is the minimum andpn
is the maximum (I assume that they are integers.) Then store in an array with size(pn-p1+1)
the values:Then all you have to check for a certain
q
is: