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