【发布时间】:2016-10-18 19:39:20
【问题描述】:
假设给定一个已排序的整数列表,例如 (1,7,13,14,50)。请注意,该列表不会包含重复项。
是否有一些数据结构可以存储它,同时允许我在恒定时间内添加任何新元素(在它的适当位置)? add(10) 将产生 (1,7,10,13,14,50)。
同样,我能否更新一个元素(例如将 7 更改为 19)并在恒定时间内相应地改变顺序?更改(7,19)产生(1,13,14,19,50)。
对于一个类,我需要编写一个尽可能快地执行这些操作的数据结构,但我只是想知道是否可以完成恒定时间,如果不能,那么理想的运行时是什么?
【问题讨论】:
-
在列表中你仍然需要
O(n)来定位元素。 HashMap 使用O(1)来定位元素。 -
“是否可以在恒定时间内添加/更新排序列表?” vs “尽可能快地执行这些操作,” 是有点矛盾。根据我的理解,“恒定时间”意味着:无论需要在哪里完成操作,它总是需要相同的时间。在大约 50% 的情况下,“尽可能快”的解决方案将比“恒定时间”的解决方案更快。
-
你想解决什么问题。你真的需要维护一个排序列表吗?还是您只需要一个可以让您有效地插入和更新项目的数据结构?
标签: java sorting data-structures