231. Power of Two #
题目 #
给定一个整数 n,判断该整数是否是 2的幂次方。如果是,返回 true;否则,返回 false。
如果存在一个整数 x 使得 n == 2^x,则认为 n 是 2 的幂次方。
思路 #
- 对于数字
2^x,当且仅当加数不小于2^x时,和才不小于2^(x+1) - 若
n的二进制表示中存在不止一个1,则该整数不是2的幂次方。
代码 #
较繁琐的实现 #
class Solution {
public boolean isPowerOfTwo(int n) {
if (n <= 0) return false;
boolean flag = false;
for (int i = 31; i >= 0; i--) {
if (((n >> i) & 1) == 1) {
if (flag == false) flag = true;
else return false;
}
}
return true;
}
}
利用位运算简化代码 #
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & n-1) == 0;s
}
}