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;
    }
};

results matching ""

    No results matching ""