寻找缺失数字的时间复杂度O(n)?

时间:2015-02-11 03:51:27

标签: java time-complexity

我想了解时间复杂度。有人here提到时间复杂度为O(n),请找到下图:由于它是N(N+1)/2,不应该是O( n ^ 2)因为N(N+1)是乘法?如果我误解了某些事情,请纠正我。

enter image description here

3 个答案:

答案 0 :(得分:4)

上面的代码计算 n(n + 1)/ 2,但这并不意味着花费时间 O(n 2 )。例如,请考虑以下代码:

int x = n*n;

此代码计算n 2 ,但它在时间O(1)中运行。

希望这有帮助!

答案 1 :(得分:1)

你误解了答案:当作者说"自然数1到N的总和是N *(N-1)/ 2"时,他提供了一个封闭的表达式来计算总和如果所有100个号码都存在。该值在O(1)中计算。

计算给出给我们的列表中99个数字的总和需要O(N)。

答案 2 :(得分:1)

复杂性是算法所需资源的度量。在这种情况下,如果列表的大小n加倍,那么所需的时间也将加倍。换句话说,所需的时间资源与n成比例。这表示为O(n)。每个步骤需要多长时间无关紧要;唯一重要的是与输入相关的总时间量。