用 O(1) 时间检测整数 n 是否是 2 的幂次。
样例
Example 1:
Input: 4
Output: true
Example 2:
Input: 5
Output: false
public class Solution {
/**
* @param n: An integer
* @return: True or false
*/
public boolean checkPowerOf2(int n) {
// write your code here
if (n < 1)
return false;
else{
return (n & (n - 1)) == 0;
}
}
}
分析:
2的幂次 的二进制都是100这种(开头是1,后边都是0)比如:4的二进制100
2的幂次-1 的二进制都是011这种(开头是0,后边都是1) 比如:3的二进制011
可以进行与操作进行判断是否是2的幂次