题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
实现方式
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index<=0)
return 0;
int [] uglys = new int[index];
uglys[0] = 1;
int count = 1;
int p2 = 0;
int p3 = 0;
int p5 = 0;
int min = 0;
while (count < index) {
min = Min(uglys[p2] * 2, uglys[p3] * 3, uglys[p5] * 5);
uglys[count] = min;
while (uglys[p2]*2 <= min)
p2++;
while (uglys[p3]*3 <= min)
p3++;
while (uglys[p5]*5 <= min)
p5++;
count++;
}
return uglys[index-1];
}
private int Min(int a, int b, int c){
return a < b ? (a < c ? a : c ) : ( b < c ? b : c );
}
}