丑数II

作者: Yui丶西米大人 | 来源:发表于2017-02-28 00:01 被阅读0次

题目描述

设计一个算法,找出只含素因子2,3,5 的第 n 大的数。1也是一个丑数。

思路

  • 方法一
    每个丑数都是2..3..5..的结果
    创建保存丑数的数组a,设a[0]=1
    用index2,index3,index5表示丑数分解包含了2、3、5的个数,初始化为0
    每次求min(a[indexk]
    k),得到当前最小的丑数,写入数组,并将indexk++
    这样做即可保证a数组中能保存所有的按序排列的丑数,输出第a[n-1]个元素即可。

  • 方法二
    将1加入保存丑数的数组a,将2,3,5加入优先队列pq
    每次从pq取min,如果min与a[tmp]不等,数组保存min,并将min*2,3,5的值加入优先队列。如果相等,跳过。
    这样做,最终可以得到a[n-1]个元素即为结果

代码

 int nthUglyNumber(int n) {
        // Write your code here
        int index2 = 0;
        int index3 = 0;
        int index5 = 0;
        int[] res = new int[n];
        res[0] = 1;
        int count = 1;
        while(count < n){
            res[count] = min(res[index2]*2, res[index3]*3, res[index5]*5);
            if(res[count] == res[index2]*2) index2++;
            if(res[count] == res[index3]*3) index3++;
            if(res[count] == res[index5]*5) index5++;
            count++;
        }
        return res[--count];
    }
    private int min(int a1, int a2, int a3){
        if(a1 < a2){
            if(a1 < a3)
                return a1;
            else
                return a3;
        }else if(a2 < a3){
            return a2;
        }else{
            return a3;
        }
    }

考差点

  • 优先队列
  • 数组下标的灵活运用

相关文章

  • 丑数II

    题目描述 设计一个算法,找出只含素因子2,3,5 的第 n 大的数。1也是一个丑数。 思路 方法一每个丑数都是2....

  • 丑数 II

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

  • 丑数 II

    编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 输入: n = 10...

  • 264-ugly-number-ii

    题目 ugly-number-ii 编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整...

  • 丑数II ugly-number-ii

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

  • 264. 丑数 II

    编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 输入: n = 10...

  • 4. 丑数 II

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8,...

  • 264.丑数II

    题目描述 编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 思路 1....

  • 4. 丑数 II

    设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

  • 264. 丑数 II

    编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。 示例: 输入: n = 10...

网友评论

      本文标题:丑数II

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