返回介绍

solution / 1700-1799 / 1780.Check if Number is a Sum of Powers of Three / README_EN

发布于 2024-06-17 01:03:14 字数 3131 浏览 0 评论 0 收藏 0

1780. Check if Number is a Sum of Powers of Three

中文文档

Description

Given an integer n, return true _if it is possible to represent _n_ as the sum of distinct powers of three._ Otherwise, return false.

An integer y is a power of three if there exists an integer x such that y == 3x.

 

Example 1:

Input: n = 12
Output: true
Explanation: 12 = 31 + 32

Example 2:

Input: n = 91
Output: true
Explanation: 91 = 30 + 32 + 34

Example 3:

Input: n = 21
Output: false

 

Constraints:

  • 1 <= n <= 107

Solutions

Solution 1: Mathematical Analysis

We find that if a number $n$ can be expressed as the sum of several "different" powers of three, then in the ternary representation of $n$, each digit can only be $0$ or $1$.

Therefore, we convert $n$ to ternary and then check whether each digit is $0$ or $1$. If not, then $n$ cannot be expressed as the sum of several powers of three, and we directly return false; otherwise, $n$ can be expressed as the sum of several powers of three, and we return true.

The time complexity is $O(\log_3 n)$, and the space complexity is $O(1)$.

class Solution:
  def checkPowersOfThree(self, n: int) -> bool:
    while n:
      if n % 3 > 1:
        return False
      n //= 3
    return True
class Solution {
  public boolean checkPowersOfThree(int n) {
    while (n > 0) {
      if (n % 3 > 1) {
        return false;
      }
      n /= 3;
    }
    return true;
  }
}
class Solution {
public:
  bool checkPowersOfThree(int n) {
    while (n) {
      if (n % 3 > 1) return false;
      n /= 3;
    }
    return true;
  }
};
func checkPowersOfThree(n int) bool {
  for n > 0 {
    if n%3 > 1 {
      return false
    }
    n /= 3
  }
  return true
}
function checkPowersOfThree(n: number): boolean {
  while (n) {
    if (n % 3 > 1) return false;
    n = Math.floor(n / 3);
  }
  return true;
}

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

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

发布评论

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