【发布时间】:2013-04-05 12:40:12
【问题描述】:
为了简单起见,我们不考虑 0 或负值。
已知解决方案 #1
return (int)(Math.log(x)/Math.log(2)); // pseudo code
问题:数值不稳定。对于x=4 输入,它可能会回答 2 或 1。
已知解决方案#2
for(int i=0; ;++i)
{
x = x >> 1;
if(x==0)
return i;
}
问题:平均复杂度为 O(n),其中 n 是类型的位数。我希望得到恒定的时间答案。
【问题讨论】: