美文网首页
面试题49(剑指offer)--丑数

面试题49(剑指offer)--丑数

作者: Tiramisu_b630 | 来源:发表于2019-08-19 22:24 被阅读0次

题目:

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

思路:

  • 丑数由另外一个丑数乘以2,3或者5得到,因此我们可以创建一个数组,里面的数字是有序的丑数。
  • 下一个丑数的值应该为min(ugly[pNum2]*2,ugly[pNum3]*3,ugly[pNum5]*5)前面的数中分别乘以2,3或5之后大于当前最大值的最小的数。

代码:

    private static int uglyNumber(int index){
        if (index<=0){
            return 0;
        }
        int[] ugly=new int[index];
        ugly[0]=1;
        int pNum2=0,pNum3=0,pNum5=0;
        for (int i = 1; i <index ; i++) {
            int minVal=min(ugly[pNum2]*2,ugly[pNum3]*3,ugly[pNum5]*5);
            ugly[i]=minVal;
            if (minVal==ugly[pNum2]*2){
                pNum2++;
            }
            if (minVal==ugly[pNum3]*3){
                pNum3++;
            }
            if (minVal==ugly[pNum5]*5){
                pNum5++;
            }
        }
        return ugly[index-1];
    }
    private static int min(int a,int b,int c){
        int min=Math.min(a,b);
        int res=Math.min(min,c);
        return res;
    }

相关文章

  • 剑指 Offer 49. 丑数

    剑指 Offer 49. 丑数[https://leetcode-cn.com/problems/chou-shu...

  • 剑指offer第二版-49.丑数

    本系列导航:剑指offer(第二版)java实现导航帖 面试题49:丑数 题目要求:我们把只包含因子2,3,5的数...

  • 面试题49(剑指offer)--丑数

    题目: 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含...

  • 剑指offer 49-丑数

    因为之前看过解题思路,所以没有在想思路上花时间。 目前我的主要时间消耗在于码完流程后debug的过程,花费大量时间...

  • 剑指 Offer 49. 丑数

    题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n ...

  • leetcode 剑指 Offer 49. 丑数

    0.code

  • AC 剑指 Offer 49. 丑数

    我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 ...

  • 剑指 Offer 第49题:丑数

    1、前言 2、思路 本题如果一个个判断的话,会超时。所以应该想的是,基本的底是2、3、5,那么我们可以从 1 开始...

  • 剑指Offer Java版 面试题49:丑数

    题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质...

  • [剑指offer] 丑数

    本文首发于我的个人博客:尾尾部落 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6...

网友评论

      本文标题:面试题49(剑指offer)--丑数

      本文链接:https://www.haomeiwen.com/subject/zodysctx.html