題目:
編寫一個程序,找出第 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]