leetcode 1780 判断一个数字是否可以表示成三的幂的和

95 阅读1分钟

给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。

对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整数 y 是三的幂。

示例 1:

输入: n = 12
输出: true
解释: 12 = 31 + 32

示例 2:

输入: n = 91
输出: true
解释: 91 = 30 + 32 + 34

示例 3:

输入: n = 21
输出: false

提示:

  • 1 <= n <= 107

由题目知道该数为若干3的n次幂值的和,可以通过循环取3的余 如果最终结果包含[0,1,2] 为2表示无法减去1(3^0)后使最终结果为0返回false 否则返回true

解:

const checkPowersOfThree = function(n) {
    while(n !== 0){
        if(n % 3 == 2){
            return false
        }
        n = Math.floor(n / 3)
    }
    return true
};
// js tostring方法可转换进制
const checkPowersOfThree = function(n) {
    return !n.toString(3).includes("2")
};