对于整数元素数组,我想计算小于该元素的最新元素的位置(如果可能),否则将 -1 存储在该位置。
通过最新元素,我的意思是最大可能的索引小于当前索引。
例如。
(基于 0 索引)
让problem[5] = {4,7,1,3,8}
然后溶胶array = {-1,0,-1,2,3}
现在我能够以 O(n^2) 的时间复杂度做到这一点......但我无法在低于这个时间复杂度的情况下做到这一点。所以,谁能告诉我如何在小于 O(n^2) 的时间复杂度内做到这一点。
我的 n^2 时间复杂度代码:
int n = 5;
int ques[n] = {4, 7, 1, 3, 8};
int sol[n] = { -1, -1, -1, -1, -1};
for (int i = 1; i < 5; i++) {
int pos;
for (int j = 0; j < i; j++) {
pos = -1;
if (ques[j] < ques[i]) {
pos = j;
}
}
sol[i] = pos;
}
for (int i = 0; i < n; i++){
cout << sol[i] << ' ';
}