【发布时间】:2013-04-15 16:53:57
【问题描述】:
这是一个算法优化问题。
我有一个整数数组 A 并且想要构建数组 B 使得 B[i] 包含 A[j] 中元素的索引 j 使得 (B[i] = j)
1. j > i
2. A[j] < A[i]
3. j is minimum of all possible j's.
例如,如果A 是:
A = [1,5,6,4,3,1,2]
然后B 将是(从 0 开始索引)
B = [-1,3,3,4,5,-1,-1]
B[0] = -1,因为没有小于1 且索引大于0 的数字。
B[1] = 3 因为A[3] 是在A 中索引1 的最右边的元素,其中包含的数字小于A[1]=5。以此类推。
我知道使用二叉搜索树具有O(n*log(n)) 复杂性的解决方案。如何将复杂度提高到O(n) 或证明不可能?
【问题讨论】:
-
再次检查,b[1]不等于2,因为a[2] = 6 > 5 = a[1]
标签: algorithm optimization complexity-theory