我最近在编码面试中被问到以下问题:
“给定笛卡尔图的连续图形点(X,Y)流,设计一个数据结构来存储它们,以便在任何时候从给定点到距离k处搜索所有相邻点应该最多在时间复杂性方面有效。“
我的想法是使用关联列表。列表的每个节点都将X点作为键,其对应的Y点作为值。请建议任何更好的数据结构。
由于
答案 0 :(得分:2)
http://en.wikipedia.org/wiki/R_tree
另见K-DTree,Quad Tree等
例如,在k-d树中找到k个最近邻居将采用O(k log n)或O(log n)作为常数k,时间。
将点存储在X中 - > Y映射对你没有帮助,因为如果它们的Y坐标非常接近,沿着X维度彼此远离的点仍然可以是最近邻居。