📅  最后修改于: 2023-12-03 14:39:40.141000             🧑  作者: Mango
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例1:
输入:1
输出:true
解释:20 = 1
示例2:
输入:16
输出:true
解释:24 = 16
示例3:
输入:218
输出:false
对于一个数x,如果它是2的幂次方,则二进制表示时只有最高位为1,其他位为0。
利用位运算的特性,我们可以将x与(x-1)做与运算,如果结果为0,则x为2的幂次方。
bool isPowerOfTwo(int n) {
if (n <= 0) {
return false;
}
return !(n & (n - 1));
}
时间复杂度:O(1)
空间复杂度:O(1)