leetcode | 49题 | 264题 | 丑数

我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

示例:

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

1 是丑数。
n 不超过1690。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/chou-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    int nthUglyNumber(int n) {
        long int dp[n + 1];
        dp[0] = 0;
        dp[1] = 1;
        long int *n2, *n3, *n5;
        n2 = n3 = n5 = &dp[1];
        for(int i = 2; i <= n; i++) {
            dp[i] = min(*n2 * 2, min(*n3 * 3, *n5 * 5));
            if(*n2 * 2 == dp[i]) n2++;
            if(*n3 * 3 == dp[i]) n3++;
            if(*n5 * 5 == dp[i]) n5++;
        }
        return dp[n];
    }
};
发布了103 篇原创文章 · 获赞 29 · 访问量 4947

猜你喜欢

转载自blog.csdn.net/weixin_43956456/article/details/105650253