0231. 2 的幂

0231. 2 的幂 #

  • 标签:位运算、数学
  • 难度:简单

题目大意 #

给定一个整数,判断它是否是 2 的幂次方。

解题思路 #

最简单的是循环。不断判断 n 是否能整除 2,若能整除,则让 n 整除 2,直到 n < 2。若最后 n == 1,则返回 True,否则则返回 False。

另一种方式是数论判断。

因为 n 的最大值为 $2^{31}-1$。计算出在 n 的范围内,2 的幂次方最大为 $3^{30} = 1073741824$。

2 为质数,则 $2^{30}$ 的除数只有 $2^0, 2^1, …, 2^{30}$。所以若 n 为 2 的幂次方,则 n 肯定能被 $2^{30}$ 整除,直接判断即可。

代码 #

1
2
3
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and 1073741824 % n == 0
本站总访问量  次  |  您是本站第  位访问者