边工作边刷题: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