美文网首页
IOS 算法(中级篇) ----- 判断一个数字是否可以表示成三

IOS 算法(中级篇) ----- 判断一个数字是否可以表示成三

作者: ShawnAlex | 来源:发表于2021-03-08 20:36 被阅读0次

    给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整数 y 是三的幂。

    例子

    输入:n = 12
    输出:true
    解释:12 = 3^1 + 3^2

    输入:n = 91
    输出:true
    解释:91 = 3^0 + 3^2 + 3^4

    输入:n = 21
    输出:false

    解题思路

    比较好的处理方式是转成3进制, 因为题中表明** n为若干个不同的三的幂之和**, 即不会有2个一样的3的幂出现
    如果一个数是3进制的话其实只能有0, 1组成 例如 12为 0110, 91为 010101

    例如:
    12 = 3^1 + 3^2
    91 = 3^0 + 3^2 + 3 ^4
    21 = 3^0 + 2 * 3 ^ 2 返回false

    循环除以3, 如果余数为2则false

    未翻译版
        func checkPowersOfThree(_ n: Int) -> Bool {
            var temp = n
            while temp > 0 {
                if temp % 3 == 2 { return false }
                temp /= 3
            }
            return true
        }
    
    翻译版
        func checkPowersOfThree(_ n: Int) -> Bool {
    
            // 定义temp = n
            var temp = n
    
            // 循环
            while temp > 0 {
    
                // 如果temp 除以3 余 2, 则返回false
                if temp % 3 == 2 { return false }
    
                // 否则temp 除以3 继续循环
                temp /= 3
            }
    
            // 满足条件返回true
            return true
        }
    

    题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
    IOS 算法合集地址

    相关文章

      网友评论

          本文标题:IOS 算法(中级篇) ----- 判断一个数字是否可以表示成三

          本文链接:https://www.haomeiwen.com/subject/vjhmqltx.html