LeetCode264と同じ問題。
私の解決策:
注意点:
(1)1も醜い数
(2)だれがabcをインクリメントするかを決定する場合、dp [i]が複数の数に係数を掛けた結果である可能性があるため、else ifではなくifを使用します。
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];
}
};