LintCode :O(1)時間檢測2的冪次

LintCode :O(1)時間檢測2的冪次

題目

用 O(1) 時間檢測整數 n 是否是 2 的冪次。

樣例

n=4,返回 true;

n=5,返回 false.

思路

判斷n是否爲2的冪次,則判斷n的二進制表達中是否只有一位是1.

代碼

bool checkPowerOf2(int n) {
    if(n < 0) return false;
    int flag = 0;
    for(int i = 0; i < 32; i++)
        if((n >> i) & 1) flag++;
    if(flag != 1) return false;
    return true;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章