题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
解题思路
丑数的定义是1或者因子只有2,3,5,so,丑数=丑数*丑数。
接着可以把丑数的有序序列分为三类:
1.包含2的有序丑数序列
2.包含3的有序丑数序列
3.包含5的有序丑数序列
使用min函数作为排序用途,接着判断每一个的因子是否包含2,3,5
# -*- coding:utf-8 -*-
class Solution:
def GetUglyNumber_Solution(self, index):
# write code here
if index<=0:
return 0
uglylist = [1]
index2 = 0
index3 = 0
index5 = 0
for i in range(index-1):
newugly = min(uglylist[index2]*2,uglylist[index3]*3,uglylist[index5]*5)
uglylist.append(newugly)
if (newugly%2 == 0):
index2 += 1
if (newugly%3 == 0):
index3 += 1
if (newugly%5 == 0):
index5 += 1
return uglylist[-1]