判断数是否为2的幂

  1. 解题思路:数大于0,并且数的二进制包含1个1
    1. n&(n-1)去掉一个1之后==0即可判断
    2. n & (-n)=n也可判断,因为-n的二进制是 的二进制表示的每一位取反再加上 1
    3. 1<<30表示左移30位,相当于2的30次方(左移1位扩大1倍即乘以2),然后只要判断n是否为2^30的公约数,即模是否==0。
    4. 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)
      
      

发表评论

电子邮件地址不会被公开。 必填项已用*标注