用 O(1) 时间检测整数 n 是否是 2 的幂次。
样例
n=4
,返回 true
;
n=5
,返回 false
.
注意
O(1) 时间复杂度
说明:该方法并没有能满足题目要求的时间复杂度,但这是一个常规的解法。
class Solution {
public:
bool checkPowerOf2(int n) {
int count=0; //记录n的二进制中有多少个1
if(n<0) //注意负数
return false;
while(n){
n&=(n-1);
++count;
}
return count==1?true:false;
}
};