丑数

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

没有更多推荐了,返回首页