题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
题目地址
思路
用空间换时间
创建一个数组,里面的数字是排好序的丑数,每个丑数都是前面的丑数乘以2,3,或5得到的。
Python
# -*- coding:utf-8 -*- class Solution: def GetUglyNumber_Solution(self, index): # write code here if index <= 0: return False t2,t3,t5 = 0,0,0 ans = [1] for i in range(1,index): ans.append(min(ans[t2]*2,ans[t3]*3,ans[t5]*5)) if ans[i] == ans[t2]*2: t2 += 1 if ans[i] == ans[t3] * 3: t3 += 1 if ans[i] == ans[t5] * 5: t5 += 1 return ans[index-1] if __name__ == '__main__': result = Solution().GetUglyNumber_Solution(5) print(result)
作者:huangqiancun
出处:http://www.cnblogs.com/huangqiancun/
本博客若无特殊说明则由作者原创发布,欢迎转载,但请注明出处 :)