【发布时间】:2014-03-20 18:28:49
【问题描述】:
给定一个整数数组,我们如何获得每个元素的最接近的更大元素?例如,如果数组是A[] = {1,2,3,4,5},那么最接近A[0] is 2,对于A[1] its 3,对于A[2] its 4..等等。
有没有比O(N^2) 更有效的方法?
我想构建两个辅助数组,其中一个将具有当前元素左侧的所有元素并且小于它,而另一个将具有当前元素右侧的所有元素并且大于它..但无法进一步进行..这个想法是否正确?
谢谢。
【问题讨论】:
-
对于数组 3,2,1,5,4,这是 A[0] 最接近的更大元素?
-
“最接近的更大元素”不只是 next 元素(至少,除了最后一个元素,在这种情况下它不存在)?或者,尽管您的示例已排序,但您的输入数组实际上可能是未排序的?如果是这种情况,只需按照以下答案中的建议对数组进行排序...然后
A[x]的“最接近的更大元素”是A[x+1],只要您小心不要跑出数组的末尾... -
作为第二个澄清,“最接近的更大元素”是否意味着 a) 在其数组位置中最接近参考元素的元素,但在数值上大于该元素,或者 b) 中的元素比参考元素大最小边距的数组,还是 c) 其他?