class Solution {
public int nthUglyNumber(int n) {
int[] dp=new int[n+1];
//最终返回dp[n],所以应该容量是n+1,返回dp[n-1],容量是n就好了
dp[1]=1;
//改一下数组,第一个丑数是1,第n个丑数是n,dp[0】用不到
int p2=1,p3=1,p5=1;
for(int i=2;i<=n;i++){
int num2=dp[p2]*2,num3=dp[p3]*3,num5=dp[p5]*5;
//就是每一个丑数都分别* 2,3,5 比较大小
dp[i]=Math.min(Math.min(num2,num3),num5);
if(dp[i]==num2){
p2++;
}
if(dp[i]==num3){
p3++;
}
if(dp[i]==num5){
p5++;
}
}
return dp[n];
}
}