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