笔试题:求第n个丑数
2017-09-14 10:51
155 查看
问题描述
—–丑数,如果一个数的因子只有2,3,5,那我们可以说这个数是丑数,现在求第n个丑数,假设1是丑数。输入输出
2036
这个意思就是第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的倍数,然后按最小到大顺序排列,就可以了。
相关文章推荐
- 网易乐得 线下笔试 求第N个丑数 Java实现
- 网易乐得 线下笔试 求第N个丑数 Java实现
- 笔试or面试——寻找单链表倒数第n个元素
- Ugly Number II(求第N个丑数)
- 《剑指offer》-寻找第n个丑数
- 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
- 笔试题:求第M个到第N个素数之间全部素数
- 输出第N个丑数
- [面试题12]第N个丑数
- 诺西的一道笔试题---寻找丑数
- 寻找丑数 - 滴滴出行2018校园招聘网申笔试-研发工程师
- 求第n个丑数
- 第N个丑数生成算法
- 输出第N个丑数
- 264.leetcode Ugly Number II(medium)[寻找第N个丑数]
- JS实现找第n个丑数(动态规划)
- 剑指offer 编程题(32):第N个丑数
- 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
- 输出第n个丑数
- google 笔试题: 丑数