关闭

牛客网 | 丑数

标签: java
367人阅读 评论(0) 收藏 举报
分类:

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。


a,b,c分别记录*2,*3,*5的位置,下一个数就是这三个数分别*2,*3,*5得到的数的最小的那个数,存到数组中

public static int GetUglyNumber_Solution(int index) {
        if (index<=0)   return 0;
        int a=0,b=0,c=0;
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        while(list.size()<index)
        {
            int next = Math.min(Math.min(list.get(a)*2,list.get(b)*3),list.get(c)*5);
            if(next == list.get(a)*2)   a++;
            if(next == list.get(b)*3)   b++;
            if(next == list.get(c)*5)   c++;
            list.add(next);
        }


        return list.get(index-1);
    }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:138658次
    • 积分:3234
    • 等级:
    • 排名:第10543名
    • 原创:158篇
    • 转载:124篇
    • 译文:7篇
    • 评论:20条
    文章分类
    最新评论