// 题目描述
// 把只包含因子2、3和5的数称作丑数(Ugly Number)。
// 例如6、8都是丑数,但14不是,因为它包含因子7。
// 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
public static int GetUglyNumber_Solution(int index) {
if (index<=0){
return 0;
}
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1);
int num2 = 0;
int num3 = 0;
int num5 = 0;
while (arrayList.size()<index){
int nextNum2 = arrayList.get(num2)*2;
int nextNum3 = arrayList.get(num3)*3;
int nextNum5 = arrayList.get(num5)*5;
int min = nextNum2<nextNum3?nextNum2:nextNum3;
min = min<nextNum5?min:nextNum5;
arrayList.add(min);
if (nextNum2 == min){
num2++;
}
if (nextNum3 == min){
num3++;
}
if (nextNum5 == min){
num5++;
}
}
return arrayList.get(index-1);
}