丑数
一个数N分解为$p_1^{(x1)} * p_2^{(x2)} \dots*p_n^{(xn)}$,$p_i$ 只能是1、2、3、5时便是丑数;
为求第n个丑数,那么每次都从集合中选出最小的丑数,分别乘以2,3,5后放入集合中,然后删除掉该最小的丑数,重复n-1次后,下一个最小的丑数便是第n个丑数。
class Solution(object):
def getUglyNumber(self, n):
"""
:type n: int
:rtype: int
"""
ugly = set([1])
while n - 1 > 0:
n -= 1
num = min(ugly)
ugly.remove(num)
ugly.add(num * 2)
ugly.add(num * 3)
ugly.add(num * 5)
return min(ugly)