【发布时间】:2014-04-09 14:13:20
【问题描述】:
在未排序的数组中,我们必须将每个元素替换为右侧第一个大于当前元素的元素。如果右边没有一个元素更大,则应将其替换为-1。
例子:
3 1 2 5 9 4 8 should be converted to
5 2 5 9 -1 8 -1
我可以想到一个简单的解决方案,我们用整个数组检查每个元素,这是一个 Ο(n²) 解决方案。有没有更好的方法来做到这一点?
【问题讨论】:
-
不应该是-1 2 5 9 -1 8 -1吗?
-
@lakesh:据我了解,5 是第一个大于 3 的值,位于第一个位置的右侧
-
@NiklasB。哦,好的。错误地理解了这个问题。
-
请注意,在最坏的情况下,平凡的算法只有
O(n^2)。平均应该是O(n)。 -
@nwellnhof:真的吗?那个怎么样?这对我来说不是很明显
标签: arrays algorithm data-structures time-complexity