【发布时间】:2014-07-28 23:26:59
【问题描述】:
算法说明
对于输入数组中的每个元素,对应的输出是输入元素后面的第一个数字,大于输入元素。
换句话说,对于给定的 input[i],output[i] 是某个元素 input[j],其中 j 是满足 j > i 且 input[j] > input[i] 的最小索引
示例
Input 12 15 22 9 7 2 18 23 27
Output 15 22 23 18 18 18 23 27 -1
例如,对应于 9 的输出是 18,因为 18 是数组中满足这些要求的第一个数字
- 在输入数组中跟随 9
- 大于 9
问题
谁能给我推荐一个比 O(n^2) 更好的算法?
【问题讨论】:
-
您对此事有何看法?你认为什么可行?
-
我一定错过了什么。为什么18重复了3次,为什么最后是-1?
-
18 被重复,因为 9 , 7 , 2 - 18 是下一个更大的数字,而 -1 是因为 27 之后没有更大的数字。
-
@instance 你的问题是模棱两可的 - 你想用原始序列中大于它的 x 之后的第一个值替换 x ,还是用所有元素中大于 x 的最小值在 x 之后?
-
@templatetypedef 我想用新元素替换每个 a[i],它是下一个比 a[i] 更大的元素。
标签: algorithm