题目来自几个面试经典算法题Java解答(http://www.cnblogs.com/sunniest/p/4596182.html)题目十
丑数是质因数只有2、3或5的数,1是第一丑数。
下面是原作者的算法,比我的算法快很多。
public int min(int a , int b , int c){
return (a <= b) ? (a <= c ? a : c) : (b <= c ? b : c);
}
public int uglyNumber(int n){
int[] array = new int[n];
array[0] = 1;
int next = 1;
int index = 0;
int index2 = 0;
int index3 = 0;
int index5 = 0;
while(next < n){
int n2 = array[index2] * 2;
int n3 = array[index3] * 3;
int n5 = array[index5] * 5;
array[next] = min(n2 , n3 , n5);
while(array[index2] * 2 <= array[next]){
index2++;
}
while(array[index3] * 3 <= array[next]){
index3++;
}
while(array[index5] * 5 <= array[next]){
index5++;
}
next++;
}
return array[next - 1];
}