49丑数

我们把只包含因子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

你可能感兴趣的:(49丑数)