题目
给你一个整数 n ,请你找出并返回第 n 个 丑数 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。
来源:力扣(LeetCode)leetcode-cn.com/problems/ug…
解题思路
- 递推公式:dp[i] = Math.min(dp[p2] * 2, dp[p3] * 3, dp[p5] * 5)
- 初始状态:dp = [0, 1]
代码实现
var nthUglyNumber = function(n) {
let p2 = p3 = p5 = 1
const dp = [0, 1]
for (let i = 2; i <= n; i++) {
dp[i] = Math.min(dp[p2] * 2, dp[p3] * 3, dp[p5] * 5)
if (dp[i] === dp[p2] * 2) p2++
if (dp[i] === dp[p3] * 3) p3++
if (dp[i] === dp[p5] * 5) p5++
}
return dp[n]
};
如有错误欢迎指出,欢迎一起讨论!