我可以将元素存储在用于O(logN)插入的STL集中,并计算O(NlogN)中的最大连续差。有没有更快的方法来做到这一点。我不想要代码。只是实现此DS的一些想法。谢谢你的帮助。
答案 0 :(得分:0)
只需在STL集周围写一个包装器。每次插入后,插入后,获取下一个最高键并计算差异。如果它大于当前最大值,请将其替换并存储增加到此最大值的键。
插入仍然是O(log n)。 获得最大值将是O(1)。
删除某个键时,查看它是否是您计算最大差异时使用的其中一个键中的一个。如果是,则必须使最大值无效,并找到新的最大值。只需按排序顺序浏览所有元素,并保持最大运行。在迭代结束时,您将知道O(n)中的最大值。
所以在最坏的情况下删除需要O(n)。