丑数 II

作者: 王王王王王景 | 来源:发表于2019-08-20 10:13 被阅读0次

编写一个程序,找出第 n 个丑数。

丑数就是只包含质因数 2, 3, 5 的正整数。

示例:

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

1 是丑数。
n 不超过1690。

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

class Solution {
public:
    int nthUglyNumber(int n) {
        int *dp = new int[n];
        for(int i = 0; i < n; ++i) {
            dp[i] = 1;
        }
        int index[3] = {0,0,0};
        for(int i = 1; i < n; ++i) {
            // 为什么是dp[index[i]],而不是直接index[i]增加,
            // index[i]直接递增无法确保index[i]就是丑数,比如index[i]增加到7的时候就不是丑数
            // index[0]、index[1]、index[2]分别是2、3、5的权值,该权值需要在需要一直递增而且是丑数,
            // 因此就可以直接作为dp的下标来获取不断递增的丑数
            int x = 2 * dp[index[0]];
            int y = 3 * dp[index[1]];
            int z = 5 * dp[index[2]];
            int temp = min(x, min(y, z));
            
            // 易错点,不能写if else
            // 可能存在x,y,z相等的情况 
            // eg: 2 * 3 = 6 和 3 * 2 = 6这种情况,这样两者的下标值都要增加(否则会出现重复的数值)
            if(temp == x) {
                ++index[0];
            }
            if(temp == y) {
                ++index[1];
            }
            if(temp == z) {
                ++index[2];
            }
            dp[i] = temp;
        }
        return dp[n-1];
    }
};

相关文章

  • 丑数II

    题目描述 设计一个算法,找出只含素因子2,3,5 的第 n 大的数。1也是一个丑数。 思路 方法一每个丑数都是2....

  • 丑数 II

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

  • 丑数 II

    编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 输入: n = 10...

  • 264-ugly-number-ii

    题目 ugly-number-ii 编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整...

  • 丑数II ugly-number-ii

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

  • 264. 丑数 II

    编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 输入: n = 10...

  • 4. 丑数 II

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8,...

  • 264.丑数II

    题目描述 编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 思路 1....

  • 4. 丑数 II

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

  • 264. 丑数 II

    编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。 示例: 输入: n = 10...

网友评论

      本文标题:丑数 II

      本文链接:https://www.haomeiwen.com/subject/pteusctx.html