3 的幂

迭代

  1. 解题思路:

    • 不断地将 n 除以 3,直到 n=1;
    • 如果此过程中 n 无法被 3 整除,就说明 n 不是 3 的幂;
  2. 复杂度:

    • 时间复杂度:O(logn);
    • 空间复杂度:O(1);
  3. 代码实现:

    function isPowerOfThree(n: number): boolean {
      while (n !== 0 && n % 3 === 0) {
        n = Math.floor(n / 3);
      }
    
      return n === 1;
    };
    

判断是否为最大 3 的幂的约数

  1. 解题思路:

    • 给定的 32 位有符号整数的范围内,最大的 3 的幂为 3^19 = 11622614673,只需要判断 n 是否是 3^19 的约数即可;
    • 这里需要特殊判断 n 是负数或 0 的情况;
  2. 复杂度:

    • 时间复杂度:O(1);
    • 空间复杂度:O(1);
  3. 代码实现:

    function isPowerOfThree(n: number): boolean {
      return n > 0 && 1162261467 % n === 0;
    };
    
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

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

粽子

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

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

了解更多

目录

  1. 1. 3 的幂
  2. 2. 迭代
  3. 3. 判断是否为最大 3 的幂的约数