算法每日一刷工作生活

326. 3的幂(Swift)

2019-07-04  本文已影响0人  entre_los_dos

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/power-of-three

题目

给定一个整数,写一个函数来判断它是否是 3 的幂次方。

示例 1:

输入: 27
输出: true

示例 2:

输入: 0
输出: false

示例 3:

输入: 9
输出: true

示例 4:

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

能不能整除3。

方法1-循环

func isPowerOfThree(_ n: Int) -> Bool {
        
        if n <= 0 {
            return false
        }
        if n == 1 {
            return true
        }
        var currentNum = n//除以3或乘以3之后的数
        var currentMod = 0//余数
        
        
        if n > 1 {
            while (currentNum != 1) {
                
                currentMod = currentNum % 3
                currentNum = currentNum / 3
                if (currentMod != 0) {
                    return false
                }
            }
        }else {
            while (currentNum != 1 ) {
                
                currentMod = currentNum % 3
                currentNum = currentNum * 3
                if (currentMod != 0) {
                    return false
                }
            }
        }
        return true
        
    }

方法2-得知整数里面3的19次方是最大的

    func isPowerOfThree(_ n: Int) -> Bool {
        
        return n>0 && (Int(pow(Double(3), Double(19))) % n == 0)
        
    }

最后

第二种方法,是看了网上大神们的得出来的,完全没想到,太妙了。

上一篇下一篇

猜你喜欢

热点阅读