将一千(1000)个元素输入数组(无内存约束)。众所周知,在输入元素时,只要输入一个值,我们就可以通过检查更新输入值的最大值。
但是想象一下,如果最大值的位置大约是900
如果我从位置800到1000删除200个元素, 如果不进行任何比较,我们应该有下一个最大值。 这是否意味着在输入数据时我们应该有计划以某种方式组织数据以从剩余数据中获取最大值?
删除和插入将继续发生,但我们应该在更短的时间内更新最大值,少步骤。 (使用堆栈可能有帮助是面试官给我的线索)。有人请帮助我。
答案 0 :(得分:1)
最大堆可能适用于您的情况。但由于1000非常小,你可能不需要复杂的东西。
答案 1 :(得分:0)
在数组上创建树结构。在每个节点中保留子树的范围和最大值。在删除/插入更新时,受影响的节点中的最大值自下而上。
答案 2 :(得分:0)
您应该使用max heap
数据结构。 max-heap
的属性是您可以在O(1)
时间内获得最大值。而每次插入和删除都需要O(log(n))
次。
有关详情,请查看here