0
点赞
收藏
分享

微信扫一扫

leetcode 263 丑数

问题描述

给定一个整数 n,需要找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。

示例:

输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。

解法一

解题思路:

使用动态规划的方法,维护一个数组 dp,其中 dp[i] 表示第 i 个丑数。通过 2, 3, 5 依次乘以前面的丑数来生成新的丑数。

/*
 * @lc app=leetcode.cn id=263 lang=javascript
 *
 * [263] 丑数
 */

// @lc code=start
function nthUglyNumber(n) {
    let dp = [1];
    let p2 = 0, p3 = 0, p5 = 0;
    for (let i = 1; i < n; i++) {
        let next2 = dp[p2] * 2,
            next3 = dp[p3] * 3,
            next5 = dp[p5] * 5;
        dp[i] = Math.min(next2, next3, next5);
        if (dp[i] == next2) p2++;
        if (dp[i] == next3) p3++;
        if (dp[i] == next5) p5++;
    }
    return dp[n - 1];
}
// @lc code=end
举报

相关推荐

0 条评论