【发布时间】:2020-05-19 07:25:41
【问题描述】:
对于整数元素数组,我想计算小于该元素的最新元素的位置(如果可能),否则将 -1 存储在该位置。
最新元素是指最大可能的索引小于当前索引。
例如。
(基于 0 索引)
让problem[5] = {4,7,1,3,8}
那么 sol 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] << ' ';
}
【问题讨论】:
-
你的意思是“[5] = {4,7,3,1,8} 然后 sol array = {-1,0,-1,-1 ,3}" ?
-
您能否与我们分享 O(n^2) 的解决方案以及您尝试以较低的复杂性解决问题的一些尝试?
-
我很抱歉!!我在问题中进行了编辑。
-
请不要对这个问题投反对票……我是编程社区的新手。
-
投票不支持你。他们是为了这个问题。它们是衡量我们认为这个问题写得好、有趣和对社区有多大帮助的衡量标准。无论如何,自从您编辑了问题后,我删除了我的反对票。