边工作边刷题:70天一遍leetcode: day 62-1

Power of Two/Power of Three/Power of Four

要点:Two和Four是类似思路,Four扩展到只在偶数位。Three是另一个思路,而这种思路只适用于3为prime:找到小于INT_MAX的最大的33….*3(319),n如果是3m,那么可以整除这个最大值。而Four不能用这个思路因为2^m也可以整除
错误点:

  • 要判断其他位为0,要对非0位取反,所以是0xAAAAAAAA
  • 注意1是4的pow
  • java中==比&优先级高
class Solution(object):
    def isPowerOfTwo(self, n):
        """
        :type n: int
        :rtype: bool
        """
        if n==0: return False
        return n&(n-1)==0

原文地址:https://www.cnblogs.com/absolute/p/5690343.html