class Solution {
public int getUglyNumber(int n) {
if(n == 0){
return 0;
}
int[] dp = new int[n + 1];
int i = 1, j = 1, k = 1;
for(int m = 1; m <= n; ++m){
if(m == 1){
dp[m] = 1;
}else{
dp[m] = Math.min(dp[i] * 2, Math.min(dp[j] * 3, dp[k] * 5));
if(dp[m] == dp[i] * 2){i++;}
if(dp[m] == dp[j] * 3){j++;}
if(dp[m] == dp[k] * 5){k++;}
}
}
return dp[n];
}
}