题目
LeetCode:231. 2的幂
【easy】
2.解题
方法一:递归法
java:
class Solution {
public boolean isPowerOfTwo(int n) {
if (n == 1) return true;
return n > 1 && isPowerOfTwo(n / 2) && (n % 2) != 1;
}
}
方法二:计数
对于一个数的二进制表示,如果这个数是2的幂,则二进制表示只有一个1.
java:
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && Integer.bitCount(n) == 1;
}
}
方法三:位与运算
对于一个数的二进制表示,如果这个数是2的幂,那么该数减1的结果是后面所有位为1,再与原数进行与运算结果必定为0.
java:
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
}