保持元素按排序顺序的数据结构,支持快速插入和计算连续元素之间的最大差异

时间:2015-04-26 12:48:21

标签: c++ data-structures

我可以将元素存储在用于O(logN)插入的STL集中,并计算O(NlogN)中的最大连续差。有没有更快的方法来做到这一点。我不想要代码。只是实现此DS的一些想法。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

只需在STL集周围写一个包装器。每次插入后,插入后,获取下一个最高键并计算差异。如果它大于当前最大值,请将其替换并存储增加到此最大值的键。

插入仍然是O(log n)。 获得最大值将是O(1)。

删除某个键时,查看它是否是您计算最大差异时使用的其中一个键中的一个。如果是,则必须使最大值无效,并找到新的最大值。只需按排序顺序浏览所有元素,并保持最大运行。在迭代结束时,您将知道O(n)中的最大值。

所以在最坏的情况下删除需要O(n)。