LeetCode 231 Power of Two

題目







分析


題目要求爲判斷一個數是否爲2的冪。
一種基本的方法就是不斷的對2取餘直到該數變爲1,如果所有的取餘結果都爲0,則爲2的冪。
比較簡單的方法:2的冪用2進製表示只有一個1,比如16= 2^4 用2進製表示則爲 10000,那麼它減一則爲 01111
這兩個數取按位與操作一定爲0



題解


解法1


class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n == 0)
            return false;
        else if(n == 1)
            return true;
        while(n != 1){
            if(n % 2 != 0)
                return false;
            n /= 2;
        }
        return true;
    }
};


解法2


class Solution {
public:
    bool isPowerOfTwo(int n) {
        return n > 0 && (n & (n - 1) )== 0;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章