我如何理解此算法的时间复杂度?它在一次采访中出现,我认为是O(n ^ 2),但我的采访者说这是O(nlogn)。
for (int i=0; i<n; i++) {
for (int j=i; j<n; j++) {
if (A[i] + B[j] = 100) {
return i, j;
}
}
}
答案 0 :(得分:2)
这个实现确实是O(n ^ 2),内部循环只节省了一半的计数,但是通过排序和线性迭代可以创建一个不同的版本O(n log n)。 鉴于100的常数,甚至有线性版本。为O(n * 100)