2 的幂
解题思路:
-
若 n = 2^x 且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:
- 恒有 n & (n - 1) == 0,这是因为:n 二进制最高位为 1,其余所有位为 0;n - 1二进制最高位为 0,其余所有位为 1;
- 一定满足 n > 0;
-
因此,通过 n > 0 且 n & (n - 1) == 0 即可判定是否满足 n = 2^x;
2^x n n - 1 n & (n - 1) 2^0 0001 0000 (0001) & (0000) == 0 2^1 0010 0001 (0010) & (0001) == 0 2^2 0100 0011 (0100) & (0011) == 0 … … … …
复杂度:
-
时间复杂度:O(1);
-
空间复杂度:O(1);
代码实现:
var isPowerOfTwo = function (n) {
return n > 0 && (n & (n - 1)) === 0
};
leetcode🧑💻 1. 两数之和
上一篇