- 求某個數(shù)是不是2的N次方檩小,要求復(fù)雜度為O(1)
漫畫:判斷2的乘方
- 用查表的方法是復(fù)雜度O(lgn)巍杈,n為數(shù)字大小
- 用遞歸的方法是復(fù)雜度O(n),n為數(shù)字位數(shù)
//先找到1樊零,在判斷
bool Is2Power(UINT32 num)
{
if(num==0)
{
return true;
}
if(num%2==0)
{
return Is2Power(num>>2);
}
else
{
if((num>>2)==0)
{
return true;
}
else
{
return false;
}
}
}
- 用位運(yùn)算n&(n-1)得到復(fù)雜度為O(1)
- 實(shí)現(xiàn)一個方法渣刷,求出一個正整數(shù)轉(zhuǎn)換成二進(jìn)制后的數(shù)字“1”的個數(shù)煎饼。要求性能盡可能高位岔。
NSInteger value = 111;
NSInteger count = 0;
while (value) {
NSLog(@"%ld",value&1);
int x = value&1;
if (x == 1) count++;
value = value>>1;
}
其中的擴(kuò)展題目1
-
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者