醜數
把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含因子7。
習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。
import static java.lang.Math.min;
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index<=1) return index;
int[] res=new int[index];
res[0]=1;
int ugly2=0,ugly3=0,ugly5=0;
for(int i=1;i<index;i++){
int minNum=min(2*res[ugly2],min(3*res[ugly3],5*res[ugly5]));
res[i]=minNum;
if(minNum==res[ugly2]*2)++ugly2;
if(minNum==res[ugly3]*3)++ugly3;
if(minNum==res[ugly5]*5)++ugly5;
}
return res[index-1];
}
}