LeetCode231 Power of Two

文章目录
  1. 1. 描述
  2. 2. 样例
  3. 3. 思路
  4. 4. 代码

描述

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

样例

1
2
Input: 2
Output: true

思路

判断一个数是否为2的次幂。

显然2次幂在二进制表示中只有一个1,所以可以用LeetCode338 Counting Bits中的方法计算1的个数。

其实还有比较简单的方法是,将这个“1”去掉,看得到的数是否为0,为0说明二进制中只有一个1。

代码

1
2
3
4
5
6
7
8
class Solution {
public:
bool isPowerOfTwo(int n) {
int bitCount = 0;
for (; n > 0; n &= (n-1), bitCount++);
return bitCount == 1;
}
};
1
2
3
4
5
6
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && !(n & (n-1));
}
};
分享到 评论