题号 264
题目描述
编写一个程序,找出第 n
个丑数。
丑数就是质因数只包含 2, 3, 5
的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:
1
是丑数。n
不超过1690。
解题思路一——暴力法【超出时间限制】
采用哈希表 unum 存储目前已经找到的丑数,key是丑数的值,value是标识该丑数是第几个。
对于第 1 个 ~ 第 5 个丑数直接存入哈希表 unum 中。
当 n < 6 时,直接返回 n 值即可;
当 n >= 6 时,令 num = 6,进入如下的循环:
(1)如果 num 可以被 2 、3、5中的任意一个整除,则表明 num 有可能是丑数,取整除后的结果,看该数是否在哈希表中:
a. 如果在,表明 num 由一个丑数和2、3、5中的一个相乘得到,那么 num 也是丑数,将 num 存入哈希表中;
b. 如果不在,表明 num 不是丑数
(2)如果 num 不可被 2、3、5 中的每一个整除,则表明 num 不是丑数
(3)如果 unum