题目分析:[[EVD]] - 剑指 Offer 49. 丑数
https://leetcode-cn.com/problems/chou-shu-lcof/
简单描述:
- 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
限制🚫
- 1 是丑数。
- n **不超过**1690。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
解题思路:
思路:
- #动态规划DP 类似打表挖空,只是多了个顺序问题
效率:
- 时间复杂度
- 空间复杂度
代码:
class Solution
{
public:
/*dp打表,2、3、5倍比较*/
int nthUglyNumber(int n)
{
int a = 0, b = 0, c = 0;
int hash[n];
hash[0] = 1;
for (int i = 1; i < n; i++)
{
int n2 = hash[a] * 2, n3 = hash[b] * 3, n5 = hash[c] * 5;
hash[i] = min(min(n2, n3), n5);
if (n2 == hash[i])
a++;
if (n3 == hash[i])
b++;
if (n5 == hash[i])
c++;
}
return hash[n - 1];
}
};