与LeetCode264是相同的题。
我的解题:
需要注意的地方:
(1)1也是丑数
(2)在判定abc谁自增的时候,用if而不是else if,因为有可能dp[i]是多个数乘以因子的结果
class Solution {
public:
int nthUglyNumber(int n) {
if(n<7) return n;
int *dp=new int[n];
int a=0,b=0,c=0;
dp[0]=1;
int i=1;
while(i<n){
dp[i]=min({2*dp[a],3*dp[b],5*dp[c]});
if(dp[i]==2*dp[a]) a++;
if(dp[i]==3*dp[b]) b++;
if(dp[i]==5*dp[c]) c++;
i++;
}
return dp[n-1];
}
};