我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
class Solution {
public int nthUglyNumber(int n) {
int a = 0,b = 0,c = 0;
int[] dp = new int[n];
dp[0] = 1;
for(int i = 1;i < n;i++){
int aa = dp[a] * 2;
int bb = dp[b] * 3;
int cc = dp[c] * 5;
dp[i] = Math.min(Math.min(aa,bb),cc);
if(dp[i] == aa){
a++;
}
if(dp[i] == bb){
b++;
}
if(dp[i] == cc){
c++;
}
}
return dp[n-1];
}
}
执行用时:2 ms, 在所有 Java 提交中击败了98.35%的用户
内存消耗:40 MB, 在所有 Java 提交中击败了27.50%的用户
通过测试用例:596 / 596