是否可以使用 O(1) 插入、删除和 O(1) 访问到最小值来创建 LinkedList 实现?

问题描述

假设您对这个问题有无限的空间复杂度。我相信我看到了解决方案,但我已经完全忘记了。如果我没记错的话,一个解决方案涉及一个堆栈来跟踪最小值,另一个涉及将数据值添加到 LinkedList 节点。

最小堆实现会导致 Log(n) 插入和删除,但有没有办法让它变成 O(1)?

如果可能的话,可以实现这一点的数据结构的实现是什么。

解决方法

如果您有这样的数据结构,您可以使用 O(n) 比较对 n 个项目进行排序:将它们添加到列表中,然后重复查找最小值并将其删除。

因此,这种数据结构一般不可能存在这些性能界限。