假设我有一长串值。我知道最大值的索引。
在每个步骤中,我根据某个标准选择一个值并根据某些规则对其进行修改(这里不重要)。 每次修改后,我都必须知道数组的最大值。
最简单的方法是比较修改后的值N
和之前的最大值O
以及N > O
,然后将最大值更新为N
。但是,如果修改的索引是存储先前最大值的位置,那么事情会变得棘手。在这种情况下,我需要扫描数组并找出最大值是O(L)
,其中L
是数组的长度。
我想避免这种最坏情况的复杂性。
实现它的最佳方法是什么? (算法或数据结构?)
答案 0 :(得分:-2)
存储“之前”的前一个最大值(P),并在N和O是相同的索引时将N与该值进行比较。 P被N替换为当前最大值,因此如果N减小到低于P的值,那么P应该再次成为最大值。