牛客(33)丑数

    //    题目描述
//    把只包含因子2、3和5的数称作丑数(Ugly Number)。
//    例如6、8都是丑数,但14不是,因为它包含因子7。
//    习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
    public static int GetUglyNumber_Solution(int index) {
        if (index<=0){
            return 0;
        }
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(1);
        int num2 = 0;
        int num3 = 0;
        int num5 = 0;
        while (arrayList.size()<index){
            int nextNum2 = arrayList.get(num2)*2;
            int nextNum3 = arrayList.get(num3)*3;
            int nextNum5 = arrayList.get(num5)*5;

            int min = nextNum2<nextNum3?nextNum2:nextNum3;
                min = min<nextNum5?min:nextNum5;

            arrayList.add(min);

            if (nextNum2 == min){
                num2++;
            }
            if (nextNum3 == min){
                num3++;
            }
            if (nextNum5 == min){
                num5++;
            }
        }
        return arrayList.get(index-1);
    }

 

posted @ 2018-05-15 14:24  楷兵  阅读(117)  评论(0编辑  收藏  举报