经过一段时间的练习后,我已经找到了一个傻瓜式(没有缓冲区溢出等)算法,如下所示:
int solution(vector<int> &A) {
long long sum = 0;
int size = A.size();
if (size == 0) return 1;
for (int i = 0; i < size; ++i)
{
sum = sum + i+1 - A[i];
}
sum += size+1;
if (sum == 0)
return (size+1);
else
return sum;
}
然而,Codility给出的检测时间复杂度是:
Detected time complexity:
O(N) or O(N * log(N))
从我的代码我看不到为什么会O(N * log(N))
。如果您有任何解释,我将非常感激。谢谢。