题目:给定一个整数n,编写一个函数来判断它是否是 2 的幂次方。
分析:
用计算机来做事,2的幂次方,第一反应,应该想到二进制解题。
一个整数转换成二进制是什么样子。应该是一串0+一个1
那只要n的二进制不是这个形式,就说明结果是 false
解题:
若 n = 2^x,且 xx 为自然数(即 nn 为 22 的幂),则一定满足以下条件:
恒有
n & (n - 1) == 0
或者 n & (-n) == n
或者 n & (-n-1) == 0
因为 (公式 -n = ~n+1
) ~为取反符号
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n==0:
return False
return n&(-n)==n
… … … …
题解部分转自 leetocde 官方。
链接:https://leetcode-cn.com/problems/power-of-two/solution/2de-mi-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。