O(1) Check Power of 2 142
Question
Using O(1) time to check whether an integer n is a power of 2.
Example
For n=4, return true;
For n=5, return false;
Challenge
O(1) time
Solution
观察2的倍数,都是只有一位为1,因此只要检查n中是否只有1个1即可。
n-1可以将最低位的1变为0,再和n取&操作,若为0则说明只有刚才最低位的1个1。
代码如下:
class Solution {
/*
* @param n: An integer
* @return: True or false
*/
public boolean checkPowerOf2(int n) {
// write your code here
if(n <= 0){
return false;
}
return (n & (n - 1)) == 0;
}
};