原题
用 O(1) 时间检测整数 n 是否是 2 的幂次。
样例
n=4,返回 true;
n=5,返回 false.
解题思路
- 本题考查bit操作
- 数学问题,照例先观察前几项
1 => 1
2 => 10
4 => 100
8 => 1000
16 => 10000
...
- 可以发现,2的次方数与2的次方数减1的相与一定为零
完整代码
class Solution(object):
def isPowerOfTwo(self, n):
"""
:type n: int
:rtype: bool
"""
return n > 0 and n & (n - 1) == 0
网友评论