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开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记,希望有更好方法同学们cue我哦。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言说明 算法学习,日常刷题记录。 题目连接 3的幂[https://leetcode-cn.com/proble...
    小鲨鱼FF阅读 590评论 0 0
  • 前言说明 算法学习,日常刷题记录。 题目连接 2的幂[https://leetcode-cn.com/proble...
    小鲨鱼FF阅读 854评论 0 0
  • 题目列表: 2的幂 3的幂 4的幂 2的幂 题目大意 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例...
    不要甜的红烧肉阅读 577评论 0 0
  • 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 ...
    e8889d737099阅读 132评论 0 0
  • 给定一个整数,写一个函数来判断它是否是 3 的幂次方。 示例 1: 方法一: 用最常规的方法,直接用除余来判断 如...
    Leeonh阅读 1,155评论 0 0