给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1 输出: true 解释: 20 = 1
示例 2:
输入: 16 输出: true 解释: 24 = 16
示例 3:
输入: 218 输出: false
n & (n - 1)
可将最后一个二进制形式的 n 的最后一位 1 移除,若移除后为 0,说明 n 是 2 的幂。- lowbit:
n & (-n)
可以得到 n 的最后一位 1 表示的十进制数,若与 n 相等,说明 n 是 2 的幂。
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and (n & (n - 1)) == 0
lowbit:
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and n == n & (-n)
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
}
lowbit:
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && n == (n & (-n));
}
}
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
};
lowbit:
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && n == (n & (-n));
}
};
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function(n) {
return n > 0 && (n & (n - 1)) == 0;
};
lowbit:
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function(n) {
return n > 0 && n == (n & -n);
};
func isPowerOfTwo(n int) bool {
return n > 0 && (n&(n-1)) == 0
}
lowbit:
func isPowerOfTwo(n int) bool {
return n > 0 && n == (n&(-n))
}
function isPowerOfTwo(n: number): boolean {
return n > 0 && (n & (n - 1)) == 0;
};
lowbit:
function isPowerOfTwo(n: number): boolean {
return n > 0 && (n & (n - 1)) == 0;
};