解法一
一个丑数乘以 2, 3, 5 之后, 一定还是一个丑数。
class Solution {
public:
int nthUglyNumber(int n) {
vector<int> dp(n,0);
dp[0]=1;
int p2=0,p3=0,p4=0;
for (int i = 1; i < n; i++)
{
dp[i]=min(min(dp[p2]*2,dp[p3]*3),dp[p4]*5);
if(dp[i]==dp[p2]*2) p2++;
if(dp[i]==dp[p3]*3) p3++;
if(dp[i]==dp[p4]*5) p4++;
}
return dp[n-1];
}
};