LeetCode--342--4的幂

问题描述:

给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

示例 1:

输入: 16
输出: true

示例 2:

输入: 5
输出: false

进阶:
你能不使用循环或者递归来完成本题吗?

方法1:同3的幂循环遍历

 1 class Solution:
 2     def isPowerOfFour(self, num):
 3         """
 4         :type num: int
 5         :rtype: bool
 6         """
 7         if num > 0 :
 8             if num == 1:
 9                 return True
10             else:
11                 k = 0
12                 while k == 0:
13                     num = num / 4.0
14                     k = num % 4
15                 
16                 if num == 1:
17                     return True
18                 else:
19                     return False
20         else:
21             return False

方法2:同3的次幂

1 import math
2 class Solution:
3     def isPowerOfFour(self, num):
4         """
5         :type num: int
6         :rtype: bool
7         """
8         return num > 0 and 4**round(math.log(num,4)) == num

方法3: 用4的倍数-1与num做与运算。15 =  1111                      15 =  1111

                                                              16 = 10000                     10 = 1010

                                                                       00000                            1010  

 1 class Solution:
 2     def isPowerOfFour(self, num):
 3         """
 4         :type num: int
 5         :rtype: bool
 6         """
 7         if num <= 0:
 8             return False
 9         else:
10             for i in range(0, 16):
11                 if num <= 4**i:
12                     tmp = num & (4**i -1)
13                     if tmp == 0:
14                         return True
15                     else:
16                         return False
17                 else:
18                     pass
19             return False

2018-09-25 21:28:04

原文地址:https://www.cnblogs.com/NPC-assange/p/9703663.html