Lintcode142. O(1)時間檢測2的冪次

這道題的主要的目的是檢測整數n是否是2的正整數次冪,要解這道題首先需要注意2點

(1)2的正整數冪的值必須是大於0的整數所以小於等於0的數據需要排除。

(2)真正要使用的解決方法是使用掩碼來計算,大家都知道2的n次冪的數據二進制形式中只會出現1一次,當這個值減去1的話就可以確保這個數據的出現1的位置之後的位置的數據都是1而包括出現1的位置及之前的數據都是0所以進行與計算的時候值為0,我們就使用這個特性來計算這個值是否為2的整數次冪。

函數如下:

if(n<=0)
{
return false;
}
int a=n-1;
return a&n?false:true;


分享到:


相關文章: