麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

264. Ugly Number II -Medium

2019-11-10 19:46:47
字體:
來源:轉載
供稿:網友

Question

Write a PRogram to find the n-th ugly number.

Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.

Note that 1 is typically treated as an ugly number, and n does not exceed 1690.

找到第n個丑數。丑數是有限個2、3、5的乘積,例如1,2,3,4,5,6,8,9,10,12是前10個丑數(1是特殊的丑數)。n不大于1690

Example

見題目

Solution

動態規劃解。我剛開始考慮的是dp[i]代表i是否為丑數,它的確定只需要知道dp[i % 2], dp[i % 3]和dp[i % 5],只要有一個是丑數,那么dp[i]必然也是丑數,然后統計丑數的個數直到n。可是這樣我沒法確定到底dp需要多大,所以需要換個思路。dp[i]應該代表第i個丑數,那么它的遞推關系該怎么找呢?其實很簡單,因為下一個丑數必然是乘以2,3或5中的最小的那個數,所以我們只需分別記下乘以2,乘以3,乘以5的最小的數的索引,那么 dp[i] = min(dp[index_2] * 2, dp[index_3] * 3, dp[index_5] * 5),每次得到dp[i]不要忘了更新索引就可以了(注意:因為有可能dp[index_2] * 2和dp[index_3] * 3是相等的,這種情況,兩個索引都要更新)

class Solution(object): def nthUglyNumber(self, n): """ :type n: int :rtype: int """ dp = [0] * n # 1為第一個丑數 dp[0] = 1 # 從1開始向前尋找 index_2, index_3, index_5 = 0, 0, 0 for i in range(1, n): dp[i] = min(dp[index_2] * 2, dp[index_3] * 3, dp[index_5] * 5) # 這里不要elif,因為兩個值可能相等,索引都需要更新 if dp[i] == dp[index_2] * 2: index_2 += 1 if dp[i] == dp[index_3] * 3: index_3 += 1 if dp[i] == dp[index_5] * 5: index_5 += 1 return dp[n - 1]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久久久久久久久久久久 | 午夜视频中文字幕 | 欧美日本亚洲视频 | 精品一区二区6 | 日本成人一区二区三区 | 逼片 | xxxxxx中国| 国产精品一区二区三区在线看 | 国产激情网 | 日韩精品久久久 | 久久亚洲线观看视频 | 成人在线视频在线观看 | 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 日本aaaa片毛片免费观蜜桃 | 国产成人强伦免费视频网站 | 男女一边摸一边做羞羞视频免费 | 线观看免费完整aaa 久久不雅视频 | 亚洲最大的成人网 | 久久出精品| 一级大片在线观看 | 2021国产精品| 国产a一级片 | 性生活视频网站 | 免费看日韩av | 伊人yinren22综合网色 | 色999国产 | 91精品动漫在线观看 | 国产精品一区在线观看 | 中文字幕亚洲一区二区三区 | 九九热在线视频观看这里只有精品 | 免费一级在线观看 | 久久国产一级 | 日韩午夜片 | 狼伊千合综网中文 | 香蕉久草视频 | 九九热精彩视频 | 成人免费久久 | 看免费5xxaaa毛片 | 中文字幕一二区 | 国产乱弄 | 999久久久国产999久久久 |