【題目描述】
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/