【发布时间】:2019-11-20 07:34:13
【问题描述】:
我想要一个数据结构,它可以存储自然数的 n 个 2D 点 (x,y) 的列表,然后允许在 O(1) 复杂度时间内检查给定点是否存在于原始点列表中,并且这个时间复杂度应该是确定性的(意味着哈希表不是一个选项)。该数据结构的创建也应该尽可能高效。我不能使用需要在时间复杂度上进行一些初始化的数据结构,这比 O(n * sqrt(n)) 更糟。
这样的数据结构存在吗?
【问题讨论】:
-
按索引查找的数组是
O(1),因此在现有点设置一个逻辑数组true,其他位置false。我认为这也满足了您对初始化复杂性的第二个要求。 -
@HighPerformanceMark 不幸的是,他需要一个大小为
n*n的二维数组 -
感谢您接受我的回答。您现在也可以对答案进行投票,这样他们的排名就会更高,并且作者会获得额外的声誉。
-
@MattTimmermans 这是一个不错的方法,但它无助于数据结构初始化时间的约束。您只能创建
O(nsqrt(n))存储桶,这会导致O(sqrt(n))的访问时间。
标签: algorithm data-structures time-complexity