算法63----丑数动态规划
Posted lee-yl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法63----丑数动态规划相关的知识,希望对你有一定的参考价值。
一、题目:
编写一个程序,找出第 n
个丑数。
丑数就是只包含质因数 2, 3, 5
的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
是前 10 个丑数。
说明:
1
是丑数。n
不超过1690。
思路:动态规划
t1,t2,t3三个变量记录乘以2,3,5的个数。如:
代码:
def nthUglyNumber(self, n): """ :type n: int :rtype: int """ ‘‘‘ #超出时间限制 if n == 0: return 0 i = 1 while i < n+1: m = i while m != 1: if not m % 2: m = m // 2 elif not m % 3: m = m //3 elif not m % 5: m = m // 5 else: n += 1 break i +=1 return n ‘‘‘ #动态规划 if n<=0: return 0 t1,t2,t3 = 0 , 0 , 0 res = [1] while len(res) < n: res.append(min(res[t1]*2,res[t2]*3,res[t3]*5)) if res[-1] == res[t1] * 2: t1 += 1 if res[-1] == res[t2] * 3: t2 += 1 if res[-1] == res[t3] * 5: t3 += 1 return res[-1]
以上是关于算法63----丑数动态规划的主要内容,如果未能解决你的问题,请参考以下文章
算法动态规划 ⑤ ( LeetCode 63.不同路径 II | 问题分析 | 动态规划算法设计 | 代码示例 )
剑指offer-丑数:动态规划+最小堆(JavaScript实现)