O(1)时间检测2的幂次
题目
用 O(1) 时间检测整数 n 是否是 2 的幂次。
注意事项
O(1) 时间复杂度样例
n=4,返回 true;
n=5,返回 false.题解
哈哈,这应该是LC上代码最少的一题了。
一个数如果是2的幂,其二进制表示都是最高位为1其余都为0,如4的二进制为0x100,16的二进制为0x10000。那么n-1就等于把n变成除最高位为0其余位都是1,再进行&运算。
class Solution {
/*
* @param n: An integer
* @return: True or false
*/
public boolean checkPowerOf2(int n) {
return (n > 0) && ((n & (n-1)) == 0);
}
};
Last Update 2016.9.7