您的位置:首页 > 编程语言 > Python开发

笔试题:求第n个丑数

2017-09-14 10:51 155 查看

问题描述

—–丑数,如果一个数的因子只有2,3,5,那我们可以说这个数是丑数,现在求第n个丑数,假设1是丑数。

输入输出

20

36

这个意思就是第20个丑数是36

上代码

def getUglyNumber(index):
if index == 0:
return 0
elif index == 1:
return 1
lst = [1]
k2 = 0
k3 = 0
k5 = 0
while len(lst) < index:
m2 = lst[k2] * 2
m3 = lst[k3] * 3
m5 = lst[k5] * 5
mi = min(m2, min(m3, m5))
if mi == m2:
k2 = k2 + 1
elif mi == m3:
k3 = k3 + 1
elif mi == m5:
k5 = k5 + 1
try:
lst.index(mi) >= 0
except:
lst.append(mi)
else:
print 'chongfule'
return lst[len(lst) - 1]

import time
start = time.time()
print getUglyNumber(20)
end = time.time()
print end - start


复杂度

时间复杂度O(n)

空间复杂度O(n)

算法运行时间0.00019907951355

复杂度如有误欢迎留言纠正。

—–代码因该不难理解,我们就求2,3,5的倍数,然后按最小到大顺序排列,就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 python