1. 程式人生 > >leetcode刷題筆記342 4的冪

leetcode刷題筆記342 4的冪

close body order 分析 pow 位操作 pre none click

題目描述:

給定一個整數 (32位有符整數型),請寫出一個函數來檢驗它是否是4的冪。

示例:
當 num = 16 時 ,返回 true 。 當 num = 5時,返回 false。

問題進階:你能不使用循環/遞歸來解決這個問題嗎?

題目分析:

如231題同樣思路,還是通過位操作來解決這道

首先判斷下輸入為0和負數的情況

然後分析4的冪的特點0,4,16

化為二進制0,0100,00010000

跟求2的冪不同的是此處少了2,8

化為2進制 ,0010,00001000

0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0

4

8

我們嘗試使用位操作將2,8過濾掉

解答代碼:

C++版:

技術分享圖片
class Solution {
public:
    bool isPowerOfFour(int n) {
        if (n<=0) return false;
        return  ((n&(n-1))==0 && ((n&0x55555555)));
    }
};
Code

Python版:

技術分享圖片
class Solution:
    def isPowerOfFour(self, num):
        """
        :type num: int
:rtype: bool """ if num<=0: return False return ((num&(num-1))==0 and (bool(num&0x55555555)))
Code

leetcode刷題筆記342 4的冪