342. Power of Four(python+cpp)
阿新 • • 發佈:2018-11-03
題目:
解釋:
判斷一個數是不是4的冪,這裡用到一個知識就是
1.判斷一個數是不是2的冪用n&(n-1)==0
,一個數是4的冪的前提是它是2的冪
2.4
的次冪-1之後是3的倍數:
3.4
的次冪的二進位制表示中只有一個1
,剩下的全是0
,而且唯一的1
右邊有偶數個0
,所以(num>>1)與0x5555555555
&之後為1
,0x55555555=1010101010101010101010101010101
。
python程式碼
from math import log10
class Solution(object):
def isPowerOfFour(self, num):
"""
:type num: int
:rtype: bool
"""
if num<=0:
return False
return num&(num-1)==0 and (num>>1)&(0x55555555)==0;
c++程式碼:
class Solution {
public:
bool isPowerOfFour(int num) {
if (num<=0)
return false;
return (num&(num-1))==0 & ((num>>1)&( 0x55555555))==0;
}
};
總結:
遇到位運算和邏輯運算的時候注意運算子的優先順序問題。