题目描述:
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
题目链接
解题思路
因为新增的大的丑数一定小的丑数乘以2,3,5得到的值最小的一个。
# -*- coding:utf-8 -*-
class Solution:
def GetUglyNumber_Solution(self, index):
# write code here
if index <=0 :return 0
res = [1 for i in range(index)]
i_2,i_3,i_5 = 0,0,0
for i in range(1,index):
if 2*res[i_2]<=3*res[i_3] and 2*res[i_2] <=5*res[i_5]:
res[i] = 2*res[i_2]
i_2 += 1
elif 3*res[i_3]<=2*res[i_2] and 3*res[i_3]<= 5*res[i_5]:
res[i] = 3*res[i_3]
i_3 += 1
else:
res[i] = 5*res[i_5]
i_5 += 1
if 3*res[i_3]==res[i]:i_3 += 1
if 5*res[i_5] == res[i]: i_5 += 1
return res[index-1]