返回介绍

solution / 0300-0399 / 0326.Power of Three / README

发布于 2024-06-17 01:04:02 字数 3279 浏览 0 评论 0 收藏 0

326. 3 的幂

English Version

题目描述

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

 

示例 1:

输入:n = 27
输出:true

示例 2:

输入:n = 0
输出:false

示例 3:

输入:n = 9
输出:true

示例 4:

输入:n = 45
输出:false

 

提示:

  • -231 <= n <= 231 - 1

 

进阶:你能不使用循环或者递归来完成本题吗?

解法

方法一:试除法

如果 $n \gt 2$,我们可以不断地将 $n$ 除以 $3$,如果不能整除,说明 $n$ 不是 $3$ 的幂,否则继续除以 $3$,直到 $n$ 小于等于 $2$。如果 $n$ 等于 $1$,说明 $n$ 是 $3$ 的幂,否则不是 $3$ 的幂。

时间复杂度 $O(\log_3n)$,空间复杂度 $O(1)$。

class Solution:
  def isPowerOfThree(self, n: int) -> bool:
    while n > 2:
      if n % 3:
        return False
      n //= 3
    return n == 1
class Solution {
  public boolean isPowerOfThree(int n) {
    while (n > 2) {
      if (n % 3 != 0) {
        return false;
      }
      n /= 3;
    }
    return n == 1;
  }
}
class Solution {
public:
  bool isPowerOfThree(int n) {
    while (n > 2) {
      if (n % 3) {
        return false;
      }
      n /= 3;
    }
    return n == 1;
  }
};
func isPowerOfThree(n int) bool {
  for n > 2 {
    if n%3 != 0 {
      return false
    }
    n /= 3
  }
  return n == 1
}
function isPowerOfThree(n: number): boolean {
  return n > 0 && 1162261467 % n == 0;
}
/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfThree = function (n) {
  return n > 0 && 1162261467 % n == 0;
};

方法二:数学

如果 $n$ 是 $3$ 的幂,那么 $n$ 最大是 $3^{19} = 1162261467$,因此我们只需要判断 $n$ 是否是 $3^{19}$ 的约数即可。

时间复杂度 $O(1)$,空间复杂度 $O(1)$。

class Solution:
  def isPowerOfThree(self, n: int) -> bool:
    return n > 0 and 1162261467 % n == 0
class Solution {
  public boolean isPowerOfThree(int n) {
    return n > 0 && 1162261467 % n == 0;
  }
}
class Solution {
public:
  bool isPowerOfThree(int n) {
    return n > 0 && 1162261467 % n == 0;
  }
};
func isPowerOfThree(n int) bool {
  return n > 0 && 1162261467%n == 0
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文