2 的幂

解题思路:

  1. 若 n = 2^x 且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:

    • 恒有 n & (n - 1) == 0,这是因为:n 二进制最高位为 1,其余所有位为 0;n - 1二进制最高位为 0,其余所有位为 1;
    • 一定满足 n > 0;
  2. 因此,通过 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

复杂度:

  1. 时间复杂度:O(1);

  2. 空间复杂度:O(1);

代码实现:

var isPowerOfTwo = function (n) {
  return n > 0 && (n & (n - 1)) === 0
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 2 的幂
  2. 2. 解题思路:
  3. 3. 复杂度:
  4. 4. 代码实现: