编写一个程序,找出第
n
个丑数。丑数就是只包含质因数
2, 3, 5
的正整数。示例:
输入: n = 10 输出: 12 解释:1, 2, 3, 4, 5, 6, 8, 9, 10, 12
是前 10 个丑数。说明:
1
是丑数。n
不超过1690。
public int nthUglyNumber(int n)
{
int[] num = new int[n];
num[0] = 1;
int a = 0, b = 0, c = 0;
int begin = 1;
while (begin < n)
{
num[begin] = Math.min(num[a]*2, Math.min(num[b]*3, num[c]*5));
if (num[begin] == num[a]*2)
a++;
if (num[begin] == num[b]*3)
b++;
if (num[begin] == num[c]*5)
c++;
begin++;
}
return num[--begin];
}