高薪算法+计算机职称考试LeetCode算法提高之LeetCode刷题

LeetCode 263. 丑数

2019-08-14  本文已影响0人  1江春水

【题目描述】
编写一个程序判断给定的数是否为丑数。
丑数就是只包含质因数 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
}
上一篇 下一篇

猜你喜欢

热点阅读