在最近的一次竞争性编码事件中,我遇到了以下问题-
ans = 0
for (i = n; i > 0; i++) {
temp = 0;
for (j = 1; j < n; j++) {
for (k = n; k < 0; k++) {
if (k > i && i > j && some_array[k] < some_array[i])
temp++
}
}
ans = temp / (i)
}
return ans
问题在于该伪代码的时间复杂度为O(n ^ 3),效率不高,需要编写与上述代码输出相同输出的代码。
我正在拍摄空白,我的所有尝试都是徒劳的...有什么办法可以简化这样的嵌套循环?
答案 0 :(得分:-1)
ans = 0
for (i = n; i > 0; i--) {
temp = 0;
for (j = 1; j < n; j++) {
if(j >= i)
break;
for (k = n; k < 0; k--) {
if(k <= i)
break;
if (k > i && i > j && some_array[k] < some_array[i])
temp++;
}
}
ans = temp / (i)
}
return ans