【发布时间】:2018-08-10 07:02:17
【问题描述】:
我得到了一个数组。我需要为数组中的每个元素找到最后一个(最右边)较小或相等的数字。
例如:
2 5 1 6 4 7
2 最后一个小于或等于数字 1,
5 最后一个小于或等于数字 4 而不是 1,等等。
另一个例子:
5 100 8 7 6 5 4 3 2 1
在这里,每个元素都有最后一个较小或相等的数字 1。我知道天真的方法,即 O(n²),但需要更好的方法。
【问题讨论】:
-
请解释“最后一个最小值”背后的逻辑,你是如何将 1 作为 2 的“最后一个最小值”得出的?
-
@LasseVågsætherKarlsen,对于一个元素,我们检查右侧所有较小的元素,然后选择最后一个较小的元素。
-
我认为他的意思是,对于每个数字,他需要在剩余的数组中找到一个小于当前的数字,并且最后一个这样的数字是最后一个最小值。
-
我猜最后一个最小值对于最少的数字不存在,
1没有最后一个最小值 -
@Ishpreet,对于 1,我们可以简单地做 1。
标签: arrays algorithm data-structures