代码如下:
public class Solution
{
public int nthUglyNumber(int n) {
int[] primes = {2, 3, 5};
int[] idx = new int[primes.length];
int[] vals = new int[primes.length];
Arrays.fill(vals, 1);
int next = 1;
int[] ugly = new int[n];
for (int i = 0; i < n; i++) {
ugly[i] = next;
next = Integer.MAX_VALUE;
for (int j = 0; j < primes.length; j++) {
if (vals[j] == ugly[i]) vals[j] = ugly[idx[j]++] * primes[j];
next = Math.min(next, vals[j]);
}
}
return ugly[n - 1];
}