1. 程式人生 > 實用技巧 >leetcode刷題筆記 264題 醜數 II

leetcode刷題筆記 264題 醜數 II

leetcode刷題筆記 264題 醜數 II

源地址:264. 醜數 II

問題描述:

編寫一個程式,找出第 n 個醜數。

醜數就是質因數只包含 2, 3, 5 的正整數。

示例:

輸入: n = 10
輸出: 12
解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。
說明:

1 是醜數。
n 不超過1690。

//通過分別構建2為基礎的醜數集合,3為基礎的醜數集合,5為基礎的醜數集合,進行多路歸併排序
import scala.collection.mutable
object Solution {
    def nthUglyNumber(n: Int): Int = {
        val nums = mutable.ListBuffer[Int]()
        nums.append(1)
        
        var i = 0
        var j = 0
        var k = 0

        while (nums.length < n) {
            val temp = math.min(nums(i)*2, math.min(nums(j)*3, nums(k)*5))
            if (nums(i)*2 == temp) i += 1
            if (nums(j)*3 == temp) j += 1
            if (nums(k)*5 == temp) k += 1
            nums.append(temp)
        }
        //println(nums.mkString(" "))
        return nums.last
    }
}