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


    思路:1.遍历

    public static int GetUglyNumber_Solution1(int index) {
            if(index<=0)
            {
                return 0;
            }
    
            int i=1;
    
            ArrayList <Integer> list=new ArrayList<>();
            while(list.size()<index){
                    int temp=i;
                    while(i%2==0){
                        i=i/2;
                    }
                    while(i%3==0){
                        i=i/3;
    
                    }
                    while(i%5==0){
                        i=i/5;
                    }
                    if(i==1){
                        list.add(temp);
    
                    }
                    i=temp+1;
    
            }
            return list.get(index-1);
        }

    2.每个丑数p=2^a*3*b*5^c

    先把1加入序列array,维护三个队列 

    list1:array*2

    list2:array*3

    list3:array*5

    每次取三个队列忠最小的加入array,如果最小有重复同时弹出

    if(index<=0){
                return 0;
            }
            ArrayList<Integer> list=new ArrayList<>();
            list.add(1);
            int p2=0;
            int p3=0;
            int p5=0;
            int num=0;
            while(list.size()<index){
                num=Math.min(list.get(p2)*2,Math.min((list.get(p3)*3),list.get(p5)*5));
                if(num==list.get(p2)*2) p2++;
                if(num==list.get(p3)*3) p3++;
                if(num==list.get(p5)*5) p5++;
                list.add(num);
            }
            return list.get(index-1);
        }
  • 相关阅读:
    转场动画3-手势返回
    UITableViewCell的选中时的颜色设置
    git的使用
    MarkDown语法学习笔记
    移动作业
    移动开发音乐播放器
    python循环删除list中的元素
    Linux权限管理
    Linux用户和用户组
    数据库常用基础操作
  • 原文地址:https://www.cnblogs.com/jieyi/p/13391821.html
Copyright © 2020-2023  润新知