美文网首页Lintcode程序员
Lintcode4 Ugly Number II solutio

Lintcode4 Ugly Number II solutio

作者: 代码码着玩 | 来源:发表于2017-03-18 14:53 被阅读35次

    【题目描述】

    Ugly number is a number that only have factors 2, 3 and 5.

    Design an algorithm to find the nth ugly number. The first 10 ugly numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12...

    Notice:Note that 1 is typically treated as an ugly number.

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

    注意:我们可以认为1也是一个丑数。

    【题目链接】

    http://www.lintcode.com/en/problem/ugly-number-ii/

    【题目解析】

    这就是多链表Merge Sort的一个扩展题。

    对于任意一个ugly number - K, 2*K, 3*K, 和5*K都是ugly number,所以说新的ugly number都是从已有的ugly number上,通过与{2,3,5}相乘而产生的。

    如果

    Ugly Number:      1,        2,          3,          4,          5,          6,            8,        10,    ..........

    那么                      1*2      2*2        3*2        4*2        5*2        6*2        8*2        10*2  ...........*2

                                  1*3      2*3        3*3        4*3        5*3        6*3        8*3        10*3  .......... *3

                                  1*5      2*5        3*5        4*5        5*5        6*5        8*5        10*5  .......... *5

    都是ugly number。只要不断把新产生的ugly number通过merge sort添加到原有的ugly number数组中就可以了,直到找到第N个。

    【答案链接】

    http://www.jiuzhang.com/solutions/ugly-number-ii/

    相关文章

      网友评论

        本文标题:Lintcode4 Ugly Number II solutio

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