- 解题思路:数大于0,并且数的二进制包含1个1
- n&(n-1)去掉一个1之后==0即可判断
- n & (-n)=n也可判断,因为-n的二进制是 的二进制表示的每一位取反再加上 1
- 1<<30表示左移30位,相当于2的30次方(左移1位扩大1倍即乘以2),然后只要判断n是否为2^30的公约数,即模是否==0。
-
class Solution: def isPowerOfTwo(self, n: int) -> bool: return n > 0 and (n & (n - 1)) == 0 class Solution: def isPowerOfTwo(self, n: int) -> bool: return n > 0 and (n & -n) == n return (n>0) && (1<<30) % n == 0; 作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/power-of-four/solution/4de-mi-by-leetcode-solution-b3ya/ 来源:力扣(LeetCode)