4 的幂

题目描述(来源于LeetCode)

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

初期思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def isPowerOfFour(self, n: int) -> bool:
i =31
pid =0
while i:
if n ==1:
pid =1
break
n/=4
i-=1
if pid:
return True
else:
return False

复杂度分析

  • 时间复杂度:O(log(n))O(log(n))
  • 空间复杂度:O(1)O(1)

进阶

使用位运算:

1
2
3
4
5
6
7
8
9
class Solution:

    def isPowerOfFour(self, n: int) -> bool:
        if n ==0 :
            return False
        if n&(n-1)==0:
            return (n&2863311530)==0
        else:
            return False

复杂度分析

  • 时间复杂度:O(1)O(1)
  • 空间复杂度:O(1)O(1)