Tips!判斷一個數是否是4的冪次方?

久違的雙百,QAQ
Leetcode-342code

題目上說了儘可能不要使用循環或者遞歸,因而想到了以前作過的判斷一個數是否是2的冪次方,所以,咱們看一哈有沒有類似性。遞歸

4的冪次方必定是2的冪次方,可是反過來卻不成立。例如,8是2的3次方,但並非4的冪次方。leetcode

1轉成2進制是1;
4轉成2進制是100;
6轉成2進制是110;
8轉成2進制是1000;
16轉成2進制是10000;get

判斷一個數是否是2的冪次方,咱們要看這個數轉成2進制後是否是全部位數只有1個1。
那4的冪次方的規律就是看這個數轉成2進制後是否是全部位數只有1個1,而且這個1只能在奇數位上出現。io

code:class

class Solution {
public:
    bool isPowerOfFour(int num) {
        if(num == 1) return true;
        if(num <= 3) return false;
        int count = 0;
        int i = 1;
        while(num != 0){
            if((num&1) != 0 && (i&1) != 0){
                count++;
            }
            if((i&1) == 0 && (num&1) != 0){
                return false;
            }
            num>>=1;
            i++;
        }
        if(count == 1)
        return true;
        return false;
    }
};

這樣子的解決方法相較於循環等方法確定是省力很多的。循環

相關文章
相關標籤/搜索