動機
Bit Manipulation,怕
Problem
Given an integer n
, return true
if it is a power of four. Otherwise, return false
.
An integer n
is a power of four, if there exists an integer x
such that n == 4x
.
Example 1:
Input: n = 16Output: true
Example 2:
Input: n = 5Output: false
Example 3:
Input: n = 1Output: true
Constraints:
- t
-231 <= n <= 231 - 1
Follow up: Could you solve it without loops/recursion?
Sol
4的次方數扣1,必定被三整除(用binary格式去看就會看到偶數個1,所以一定會被3整除)
接著要確認只有一個bit,像10扣1能被3整除,但10不是4的次方數
class Solution:
def isPowerOfFour(self, n: int) -> bool:
return n > 0 and (n-1) % 3 == 0 and (n&(n-1)) == 0