Java算法题:判断数字中的丑数

讨论 Rambo_gor
Lv5 宗师级炼丹师
发布在 Java编程   973   0
讨论 Rambo_gor   973   0

    题目描述

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

    实现方式

    public class Solution {
        public int GetUglyNumber_Solution(int index) {
            if(index<=0)
              return 0;
            int [] uglys = new int[index];
            uglys[0] = 1;
            int count = 1;
            int p2 = 0;
            int p3 = 0;
            int p5 = 0;
            int min = 0;
            while (count < index) {
              min = Min(uglys[p2] * 2, uglys[p3] * 3, uglys[p5] * 5);
              uglys[count] = min;
              while (uglys[p2]*2 <= min)
                p2++;
              while (uglys[p3]*3 <= min)
                p3++;
              while (uglys[p5]*5 <= min)
                p5++;
              count++;
            }
            return uglys[index-1];
        }
        private int Min(int a, int b, int c){
            return a < b ? (a < c ? a : c ) : ( b < c ? b : c );
        }
    }
    版权声明:作者保留权利,不代表意本站立场。如需转载请联系本站以及作者。

    参与讨论

    回复《 Java算法题:判断数字中的丑数

    EditorJs 编辑器

    沙发,很寂寞~
    反馈
    to-top--btn