校招真题练习036 寻找丑数(滴滴)

Posted asenyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校招真题练习036 寻找丑数(滴滴)相关的知识,希望对你有一定的参考价值。

寻找丑数

题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

输入描述:
整数N

输出描述:
第N个丑数

 1 N = int(input().strip())
 2 if N <= 6:
 3     print(N)
 4 else:
 5     i2,i3,i5 = 0,0,0
 6     dp = [0] * N
 7     dp[0] = 1
 8     for i in range(1,N):
 9         n2 = dp[i2] * 2
10         n3 = dp[i3] * 3
11         n5 = dp[i5] * 5
12         dp[i] = min(min(n2,n3),n5)
13         if dp[i] == n2:
14             i2 += 1
15         if dp[i] == n3:
16             i3 += 1
17         if dp[i] == n5:
18             i5 += 1
19     print(dp[N-1])

剑指Offer第49题,动态规划。(注意:1也是丑数)

以上是关于校招真题练习036 寻找丑数(滴滴)的主要内容,如果未能解决你的问题,请参考以下文章

校招真题练习029 圈地运动(360)

校招真题练习019 毕业旅行问题(头条)

校招真题练习027 小易的字典(网易)

校招真题练习023 俄罗斯方块(网易)

2018 拼多多 校招真题 最大乘积

滴滴笔试