264. 丑数 II/面试题49. 丑数(简单)
编写一个程序,找出第 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
思路:
剑指offer思路:每一个丑数,都是前面某个丑数2,3或5得来的
我们用一个数组接收所有的丑数,设当前最大丑数为M,先考虑前面某个丑数*2,会得到若干小于等于M的数,这些数都不需要,还有若干大于M的数,我们需要第一个,同理 * 3 *5一样,求得了三个大于M的数,下一个丑数就是在三个丑数中取最小的,就是下一个丑数了
dp[i] 表示第i个丑数
那么dp[i] = min(2 * dp[l_2], 3 * dp[l_3], 5 * dp[l_5])
这里 l_2, l_3, l_5是表示,指到的位置。
时间复杂度:O(n)
代码:
1 | class Solution { |