把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
思路分析:
先新建一个数组专门用于存放丑数,第一个丑数为1;然后,设置3个变量记录下标,开始循环,每次将2,3,5的倍数中最小的作为当前循环的数,依次类推,最后输出数组的N-1索引的值即为第N个丑数。
public class Solution {
public int GetUglyNumber_Solution(int index) {if(index<=0)
return 0;
int[] result=new int[index];
result[0]=1;
int k,k2=0,k3=0,k5=0;
for(k=1;k<index;++k){
result[k]=Math.min(result[k2]*2,Math.min(result[k3]*3,result[k5]*5));
if(result[k]==result[k2]*2)
k2++;
if(result[k]==result[k3]*3)
k3++;
if(result[k]==result[k5]*5)
k5++;
}
return result[index-1];
}
}