LintCode O(1)檢測2的冪次

O(1)檢測2的冪次

用 O(1) 時間檢測整數 n 是否是 2 的冪次。
樣例
n=4,返回 true;
n=5,返回 false.
注意
O(1) 時間複雜度

solution: 在O(1) 時間內判斷一個整數是否爲2的冪次,只能使用位操作。因爲2的冪次數其二進制表示中1的個數只有一個而其他的數則沒有這情況。而2的冪次減1除了那位爲0其他位爲1。
例如:
2 = (10)2 —-> 1 = (01)2
4 = (100)2 —-> 3 = (011)2
8 = (1000)2 —-> 7 = (0111)2
code :

class Solution {
public:
    /*
     * @param n: An integer
     * @return: True or false
     */
    bool checkPowerOf2(int n) {
        // write your code here
        if (n < 1)
            return false;
        else 
            return (n & (n - 1)) == 0;
    }
};
發佈了49 篇原創文章 · 獲贊 22 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章