把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
分别用2、3、5乘以倍数,然后选择其中最小的一个最为丑数的下一位,就能够得出丑数的最小排列
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index == 0) return 0;
int[] ugly = new int[index];
ugly[0] = 1;
int index2 = 0;
int index3 = 0;
int index5 = 0;
for(int i=1;i<index;i++){
ugly[i] = Math.min(Math.min(ugly[index2]*2,ugly[index3]*3),ugly[index5]*5);
//判断第i个位置下,2、3、5更新下标的索引
if(ugly[i] == ugly[index2]*2){
index2++;
}
if(ugly[i] == ugly[index3]*3){
index3++;
}
if(ugly[i] == ugly[index5]*5){
index5++;
}
}
return ugly[index-1];
}
}