题目:
给你一个整数 n ,请你找出并返回第 n 个 丑数 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。
示例 2:
输入:n = 1
输出:1
解释:1 通常被视为丑数。
解题思路:
采用生成的方式生成丑数。
a,b,c分别用于记录当前没乘2,3,5的数的位置,然后下一个丑数就是每一个没乘相应(2,3,5)乘以(对应的2,3,5)之后的结果中最小的那一个,并将乘的(a,b,c的位置的对应的指针向后移动1)
代码:
class Solution:
def nthUglyNumber(self, n: int) -> int:
res=[1]
a,b,c=0,0,0
for x in range(1,n):
k=min(res[a]*2,res[b]*3,res[c]*5)
res.append(k)
if res[x]==res[a]*2:
a+=1
if res[x]==res[b]*3:
b+=1
if res[x]==res[c]*5:
c+=1
return res[n-1]