繁体   English   中英

在数组中查找最大值

[英]Finding Maximum Value in an array

一千(1000)个元素输入到数组中(没有内存限制)。 众所周知,在输入元素时,无论何时输入值,我们都可以通过检查来更新输入值的最大值。

但是,假设最大值的位置是否在900左右

如果我从位置800到1000中删除了200个元素,而又不进行任何比较,那么我们应该有下一个最大值。 这是否意味着在输入数据时,我们应该制定计划以某种方式组织数据,以便从剩余数据中获取最大值?

删除和插入将继续发生,但是我们应该在更少的时间内,更少的步骤下更新最大值。 (使用堆栈可能是面试官给我的线索)。 有人请帮助我。

在您的情况下,最大堆可能有效。 但是由于1000很小,因此您可能不需要复杂的东西。

在阵列上创建树结构。 在每个节点中,保留子树的范围和最大值。 删除/插入时,请自底向上更新受影响节点中的最大值。

您应该使用max heap数据结构。 max-heap的属性是您可以在O(1)时间内获得最大值。 每次插入和删除将花费O(log(n))时间。 欲了解更多信息,请点击这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM