【发布时间】:2018-03-19 04:12:48
【问题描述】:
这是 Gayle Laakmann 在“Cracking the Coding Interview”一书中给出的代码。这里找代码的时间复杂度:-
int sumDigits(int n)
{ int sum=0;
while(n >0)
{
sum+=n%10;
n/=10
}
return sum ;
}
我知道时间复杂度应该是n的位数。
根据本书,它的运行时间复杂度是 O(log n)。书提供了简要说明,但我不明白。
【问题讨论】:
-
n 的位数为 log n。 (或者足够接近 O 复杂度的近似值。)
-
n 不减 1,因此不是线性的。循环中的每一次通过,n 都会减少一个数量级
-
Code complexity的可能重复
标签: time-complexity big-o