Solution1: 向右移1位 = n / 2
public class Solution {
public boolean isPowerOfTwo(int n) {
if (n == 1) {
return true;
}
int temp = n;
while (temp != 2) {
if (temp % 2 != 0 || temp < 2) {
return false;
}
temp = temp >> 1;
}
return true;
}
}
Solution2: Better solution如果一个整数是2的幂,那么它的二进制形式最高位为1,其余各位为0.
等价于:n & (n - 1) = 0,且n > 0
public class Solution {
public boolean isPowerOfTwo(int n) {
if (n > 0 && (n & (n - 1)) == 0) {
return true;
}
return false;
}
}
No comments:
Post a Comment