我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。
class Solution(object):
def nthUglyNumber(self, n):
"""
@param: n int, 第n个
@return: int, 第n个丑数
"""
if n <= 0:
return 0
if n == 1:
return 1
numbers = [1]
i2, i3, i5 = 0, 0, 0
for i in range(n-1):
n2, n3, n5 = numbers[i2] * 2, numbers[i3] * 3, numbers[i5] * 5
Min = min(n2, n3, n5)
numbers.append(Min)
i2 += (Min == n2)
i3 += (Min == n3)
i5 += (Min == n5)
return Min
网友评论