lintcode-142-O(1)时间检测2的幂次

142-O(1)时间检测2的幂次

用 O(1) 时间检测整数 n 是否是 2 的幂次。

样例

n=4,返回 true;
n=5,返回 false.

挑战

O(1) time

标签

比特位操作

思路

使用位操作, 2 的幂次的 2 进制形式中只包含一个 1,如1(0001),2(0010),4(0100)。其他数包含多个 1(0除外),如3(0011),所以只需要将 n 与 n-1 逐位与,即可判定。

code

class Solution {
public:
    /*
     * @param n: An integer
     * @return: True or false
     */
    bool checkPowerOf2(int n) {
        // write your code here
        if(n <= 0) {
            return false;
        }
        return n & (n-1) ? false : true;
    }
};
原文地址:https://www.cnblogs.com/libaoquan/p/7224904.html