醜數

醜數

把只包含因子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];
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章