LeetCode 263. 丑数

作者: 1江春水 | 来源:发表于2019-08-14 15:50 被阅读0次

    【题目描述】
    编写一个程序判断给定的数是否为丑数。
    丑数就是只包含质因数 2, 3, 5 的正整数。

    【示例1】

    输入: 6
    输出: true
    解释: 6 = 2 × 3
    

    【示例2】

    输入: 8
    输出: true
    解释: 8 = 2 × 2 × 2
    

    【示例3】

    输入: 14
    输出: false 
    解释: 14 不是丑数,因为它包含了另外一个质因数 7。
    

    【提示】

    1、1 是丑数。
    2、输入不会超过 32 位有符号整数的范围: [−231,  231 − 1]。
    

    【思路】
    1、丑数:因数(约数)全是 质数的数称为丑数
    2、假如一个数为n,n除以2直到不能被整除为止,接着再除以3不能被整除为止, 接着除以5 不能被整除为止
    3、判断n是否等于1
    4、时间复杂度约等于O(log3^n) (以三为底n的对数)
    5、空间复杂度O(1)

    Swift代码实现:

    func isUgly(_ num: Int) -> Bool {
        if num == 0 { return false }
        var tmp = num
        while tmp%2 == 0 {
            tmp/=2
        }
        while tmp%3 == 0 {
            tmp/=3
        }
        while tmp%5 == 0 {
            tmp/=5
        }
        return tmp == 1
    }
    

    相关文章

      网友评论

        本文标题:LeetCode 263. 丑数

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