打卡群刷题总结0922——丑数 II

时间:2022-07-26
本文章向大家介绍打卡群刷题总结0922——丑数 II,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目:264. 丑数 II

链接:https://leetcode-cn.com/problems/ugly-number-ii

编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。

解题:

1、dp问题。

下一个丑数肯定是2的倍数、3的倍数或者5的倍数。

代码:

class Solution:
    def nthUglyNumber(self, n: int) -> int:
        i2, i3, i5 = 0, 0, 0
        ls = [1]
        for i in range(1, n):
            while ls[i2] * 2 <= ls[-1]:
                i2 += 1
            while ls[i3] * 3 <= ls[-1]:
                i3 += 1
            while ls[i5] * 5 <= ls[-1]:
                i5 += 1
            ls.append(min(ls[i2] * 2, ls[i3] * 3, ls[i5] * 5))
        return ls[-1]