LeetCode 264.丑数 II(动态规划)

题目描述

编写一个程序,找出第 n 个丑数。
丑数就是只包含质因数 2, 3, 5 的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:
1 是丑数。
n 不超过1690。

思路

详见链接

代码

class Solution:
	def nthUglyNumber(self,n:int) -> int:
		dp = [0]*n
		dp[0] = 1
		p2 = 0
		p3 = 0
		p5 = 0
		for i in range(1,n):
			dp[i] = min(2*dp[p2] , 3*dp[p3] , 5*dp[p5])
			if dp[i] >= 2*dp[p2]:
				p2 += 1
			if dp[i] >= 3*dp[p3]:
				p3 += 1
			if dp[i] >= 5*dp[p5]:
				p5 += 1
		print(dp)
		return dp[-1]
test = Solution()
test.nthUglyNumber(10)

效果

LeetCode 264.丑数 II(动态规划)_第1张图片

你可能感兴趣的:(Leetcode,丑数II,动态规划,leetcode,python)