题目:
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
示例 1:
输入:n = 1
输出:true
解释:20 = 1
示例 2:
输入:n = 16
输出:true
解释:24 = 16
示例 3:
输入:n = 3
输出:false
C语言:
bool isPowerOfTwo(int n)
{
if(n==1) return true;
while(n > 1)
{
if(n%2 == 0)
{
n/=2;
if(n == 1)
return true;
}
else
{
return false;
break;
}
}
return false;
}
执行用时0ms,内存消耗5.6MB。
官方做法:
bool isPowerOfTwo(int n)
{
return n>0 && (n&(n-1))==0;
}
执行用时4ms,内存消耗5.5MB。
思路:运用 2的幂在二进制时只有一个1的特性。
Python3:
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
for i in range(0, 32):
if 2**i == n:
return True
break
return False
执行用时48ms,内存消耗15.1MB。