LeetCode 264. 丑数 II

Description

编写一个程序,找出第 n 个丑数。

丑数就是只包含质因数 2, 3, 5 的正整数。

示例:

输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:  

1 是丑数。
n 不超过1690。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ugly-number-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Solution

class Solution:
    def nthUglyNumber(self, n: int) -> int:
        if n == 0: return None
        ans = [None for _ in range(n+1)]
        ans[0] = 1
        idx2, idx3, idx5 = 0, 0, 0
        for i in range(1, n):
            tmp = min(ans[idx2]*2, ans[idx3]*3, ans[idx5]*5)
            if tmp == ans[idx2]*2:
                idx2 += 1
            if tmp == ans[idx3]*3: # 不能使用elif,只要相等idx就要+1
                idx3 += 1
            if tmp == ans[idx5]*5:
                idx5 += 1
            ans[i] = tmp
        return ans[n-1]

你可能感兴趣的:(算法----数组,LeetCode)