我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:
1 是丑数。
n 不超过1690。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/chou-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二刷动归的一个小题,定义 abc 三个指针,a 是 乘以 2 的,b 是乘以 3 的,c 是乘以 5 的,选出当前元素最小的,定义为下一个丑数,举个例子,比如此时 a = b = c = 0, ans[0] = 1,那么此时 ans[1] = a * 2,见代码能知道题意
class Solution {
public int nthUglyNumber(int n) {
int a = 0, b = 0, c = 0;
int[] ans = new int[n];
ans[0] = 1;
for (int i = 1; i < n; i++) {
int d1 = ans[a] * 2;
int d2 = ans[b] * 3;
int d3 = ans[c] * 5;
int temp = Math.min(Math.min(d1, d2), d3);
ans[i] = temp;
if (d1 == temp) {
a++;
}
if (d2 == temp) {
b++;
}
if (d3 == temp) {
c++;
}
}
return ans[n - 1];
}
}



