题目:
编写一个程序,找出第 n 个丑数。
丑数就是质因数只包含 2, 3, 5 的正整数。
思路:
存储所有得到的丑数,
设置三个指针对应不同的因子。
三个因子所指的丑数值成以因子值中的最小值就是新的丑数
代码:
class Solution {
public int nthUglyNumber(int n) {
int min2 = 0;
int min3 = 0;
int min5 = 0;
int []result = new int[n];//result用来存储丑数
result[0] = 1;
for(int i = 1; i < n; i++){
//丑数*2 *3 *5依然是丑数
int min = Math.min(Math.min(result[min2] * 2, result[min3] * 3), result[min5] * 5);
if(min == result[min2] * 2){
min2++;
}
if(min == result[min3] * 3)
min3++;
if(min == result[min5] * 5)
min5++;
result[i] = min;
}
return result[n - 1];
}
}