leetcode之Ugly Number II(264)

題目:

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

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

示例:

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

說明:  

  1. 1 是醜數。
  2. n 不超過1690。

Python代碼1:

class Solution:
    def nthUglyNumber(self, n):
        q = [1]
        i2 = i3 = i5 = 0
        while len(q) < n:
            m2, m3, m5 = q[i2] * 2, q[i3] * 3, q[i5] * 5
            m = min(m2, m3, m5)
            if m == m2:
                i2 += 1
            if m == m3:
                i3 += 1
            if m == m5:
                i5 += 1
            q += [m]
        return q[-1]

Python代碼2:(超時,未AC)

class Solution(object):
    def nthUglyNumber(self, n):
        res=[2**i*3**j*5**k  for i in range(30)  for j in range(20)   for k in range(15)]
        return sorted(res)[n-1]

 

 

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