Lintcode4 Ugly Number II solution 題解

【題目描述】

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/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章