class Solution {
public:
int nthUglyNumber(int n) {
}
};
剑指 Offer 49. 丑数
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
是前 10 个丑数。
说明:
1
是丑数。n
不超过1690。注意:本题与主站 264 题相同:https://leetcode.cn/problems/ugly-number-ii/
原站题解
python3 解法, 执行用时: 112 ms, 内存消耗: 15 MB, 提交时间: 2022-11-13 12:43:01
class Solution: def nthUglyNumber(self, n: int) -> int: # 动态规划 dp = [0] * (n + 1) dp[1] = 1 p2 = p3 = p5 = 1 for i in range(2, n + 1): num2, num3, num5 = dp[p2] * 2, dp[p3] * 3, dp[p5] * 5 dp[i] = min(num2, num3, num5) if dp[i] == num2: p2 += 1 if dp[i] == num3: p3 += 1 if dp[i] == num5: p5 += 1 return dp[n]