Problem: 231. 2 的幂
文章目录
- 题目描述
- 思路及解法
- 复杂度
- Code
题目描述
思路及解法
1.若为0和负数则直接返回false;
2.利用一个标志数mask令其为一,不断的算术左移同时和n做与(&)运算,统计n中二进制位为1的个数,若二进制位的个数为1则说明是二的幂否则不可;
复杂度
时间复杂度:
O ( 1 ) O(1) O(1)
空间复杂度:
O ( 1 ) O(1) O(1)
Code
class Solution {
/**
* Power of Two
*
* @param n Given number
* @return boolean
*/
public boolean isPowerOfTwo(int n) {
if (n < 0) {
return false;
}
int oneCount = 0;
int mask = 1;
for (int i = 0; i < 32; ++i) {
if ((n & mask) != 0) {
oneCount++;
}
mask <<= 1;
}
return oneCount == 1 ? true : false;
}
}