丑数
题目描述:
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。
习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
解题思路:
//思路:某个丑数肯定是前面丑数的2,3,5倍数。只需要从前往后生成即可。1,2,3,4,5,6,8,9,10,12,15,。。。。。。。
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index==0){
return 0;
}
int[] result=new int[index];
result[0]=1;
//t2:数组最后一个2的倍数所在位置
//t3:数组最后一个3的倍数所在位置
//t5:数组最后一个5的倍数所在位置
int t2=0,t3=0,t5=0;
for(int i=1;i<index;i++){
//每一个丑数都是前面丑数乘以2,3或者5得到的
result[i]=Math.min(result[t2]*2,Math.min(result[t3]*3,result[t5]*5));
if(result[i]==result[t2]*2){
t2++;
}
if(result[i]==result[t3]*3){
t3++;
}
if(result[i]==result[t5]*5){
t5++;
}
}
return result[index-1];
}
}