题目描述:只包含素因子2,3,5的数就是丑数。例如2,4,6,8,10都是丑数,默认第一个丑数是1。求第n个丑数。
思路:依次计算出丑数,设置三个指针,依次从小到大遍历这些求出的丑数,将这些指针所指的数分别乘2、3、5,再比较大小,将小的放进队列。
public static int getUglyNumber_Solution(int index){
if(index==0)
return 0;
List<Integer> list=new ArrayList<Integer>();
list.add(1);
int num2=0;
int num3=0;
int num5=0;
while(list.size()<index){
int two=list.get(num2)*2;
int three=list.get(num3)*3;
int five=list.get(num5)*5;
int min=Math.min(Math.min(two, three), five);
if(min==two)
num2++;
if(min==three)
num3++;
if(min==five)
num5++;
list.add(min);
}
return list.get(list.size()-1);
}