题目连接
class Solution {
public int nthUglyNumber(int n) {
int[] res = new int[n];
res[0] = 1;
int i = 0, j = 0, k = 0;
for (int index = 1; index < n; index++) {
// 在生成的三个数组中选最小的丑数
int mini = Math.min(res[i] * 2, Math.min(res[j] * 3, res[k] * 5));
// 三个数组都有可能存在最小的元素, 只要是最小的, 就需要移动指针
if (res[i] * 2 == mini) i++;
if (res[j] * 3 == mini) j++;
if (res[k] * 5 == mini) k++;
res[index] = mini;
}
return res[n - 1];
}
}
详细题解直接看评论区大佬的: