题目描述:看看某个数是不是4的开方,也就是说相当于判断1的个数是在奇数还是偶数位?

题目链接:Leetcode 342. Power of Four

  • 这道题让我们判断一个数是否为4的次方数,那么最直接的方法就是不停的除以4,看最终结果是否为1。
  • 我们在确定其是2的次方数了之后,发现只要是4的次方数,减1之后可以被3整除.
  • 最高位都是奇数位。
  • 4的次方数的最高位的1都是奇数位,那么我们只需与上一个数(0x55555555) <==> 1010101010101010101010101010101,如果得到的数还是其本身,则可以肯定其为4的次方数.

代码如下

class Solution:
    def isPowerOfFour(self, num):
        """
        :type num: int
        :rtype: bool
        """
        return False if num<=0 else (not (num & (num - 1))) and (num - 1) % 3 == 0

参考链接

Leetcode 342. Power of Four

相关文章:

  • 2021-05-02
  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
  • 2021-07-30
  • 2022-12-23
  • 2022-01-08
  • 2021-06-23
猜你喜欢
  • 2021-04-15
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2021-04-10
相关资源
相似解决方案