Leetcode 231. Power of Two

2018-01-12 14:42:07 浏览数 (1)

Given an integer, write a function to determine if it is a power of two.

判断一个数是不是2的若干次幂?

第一个想法,首个bit位为1,其余全为0.

优美解法:只有2的若干次幂和自身减1的每一个bit位不同,所以n &(n-1) != 0 说明这个数不是2的若干次幂。

最后注意负数的情况。

代码语言:javascript复制
class Solution {
public:
    bool isPowerOfTwo(int n) {
        return n <= 0 ? false : !(n & (n - 1));
    }
};

0 人点赞