丑数

给你一个整数 n ,请你找出并返回第 n 个 丑数 。

丑数 就是质因子只包含 23 和 5 的正整数。

1.纯暴力 挨个枚举

2.新的丑数由已经生成的丑数分别*2 *3 *5得到
有重复

3.用三个指针来进行优化,保证不会重复

class Solution {
public:
    int nthUglyNumber(int n) {
        int dp[n+1];
        dp[1] = 1;
        for(int i = 2,i2 = 1,i3 = 1,i5 = 1; i <= n; i++) {
            int a = dp[i2]*2,b = dp[i3]*3,c = dp[i5]*5;
            int d = min(min(a,b),c);
            dp[i] = d;
            if(d == a) {
                i2++;
            }
            if(d == b) {
                i3++;
            }
            if(d == c) {
                i5++;
            }
        }
        return dp[n];
    }
};
github