题目:
编写一个程序,找出第 n
个丑数。
丑数就是只包含质因数 2, 3, 5
的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
是前 10 个丑数。
说明:
1
是丑数。n
不超过1690。
Python代码1:
class Solution:
def nthUglyNumber(self, n):
q = [1]
i2 = i3 = i5 = 0
while len(q) < n:
m2, m3, m5 = q[i2] * 2, q[i3] * 3, q[i5] * 5
m = min(m2, m3, m5)
if m == m2:
i2 += 1
if m == m3:
i3 += 1
if m == m5:
i5 += 1
q += [m]
return q[-1]
Python代码2:(超时,未AC)
class Solution(object):
def nthUglyNumber(self, n):
res=[2**i*3**j*5**k for i in range(30) for j in range(20) for k in range(15)]
return sorted(res)[n-1]