leetcode刷題筆記342 4的冪
阿新 • • 發佈:2018-04-30
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: intCode:rtype: bool """ if num<=0: return False return ((num&(num-1))==0 and (bool(num&0x55555555)))
leetcode刷題筆記342 4的冪