Swift 3的幂 - LeetCode

LeetCode

题目: 3的幂

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

案例1:

输入: 27
输出: true

示例 2:

输入: 0
输出: false

案例 3:

输入: 9
输出: true

案例 4:

输入: 45
输出: false
方案一:使用循环,当整数除3的余数不为0时,不是3的幂,整数一直除3,最后值为1,则该整数是3的幂
代码一:
func isPowerOfThree(_ n: Int) -> Bool {
    if n < 1 {
        return false
    }
    if n == 1 {
        return true
    }
    var s = n
    while s > 1 {
        if s % 3 != 0 {
            return false
        }
        s = s / 3
    }
    
    return true
}
执行用时320ms
方案二:3的幂有个特性,他的约数必是3的幂,所以可以求一个不溢出情况下的最大3的幂整数去除所需要判断的值,如果余数为0,则是3的幂
代码二:
return n > 0 && (Int(pow(Double(3), Double(33))) % n == 0)

为啥是33、、、嗯,自己试试就知道了。。。、、、然后这个执行用时,有时300多,有时200多、、、我也是不知道为什么


Swift 3的幂 - LeetCode_第1张图片
进阶执行用时
用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记,希望有更好方法同学们cue我哦。

你可能感兴趣的:(Swift 3的幂 - LeetCode)