列表res按序存储丑数
res[0] = 1,
下一个丑数产生规则:
1.找出res所有数*2 中第一个 大于 res [-1] 的数:res[n2]
2.找出res所有数*3 中第一个 大于 res [-1] 的数 :res[n3]
3.找出res所有数*5 中第一个 大于 res [-1] 的数 :res[n5]
4.min(res[n2]*2,res[n3]*3,res[n5]*5) 即为下一个丑数
下一个丑数产生规则:
1.找出res所有数*2 中第一个 大于 res [-1] 的数:res[n2]
2.找出res所有数*3 中第一个 大于 res [-1] 的数 :res[n3]
3.找出res所有数*5 中第一个 大于 res [-1] 的数 :res[n5]
4.min(res[n2]*2,res[n3]*3,res[n5]*5) 即为下一个丑数
# -*- coding:utf-8 -*-
class Solution:
def GetUglyNumber_Solution(self, index):
if index < 1:
return 0
n2 = 0
n3 = 0
n5 = 0
res = [1]
next = 1
while next < index:
minnum = min(res[n2]*2,res[n3]*3,res[n5]*5)
res.append(minnum)
if res[n2]*2 <= minnum: #记录第一个 *2 >minnum的索引
n2 += 1
if res[n3]*3 <= minnum: #记录第一个 *3 >minnum的索引
n3 += 1
if res[n5]*5 <= minnum: #记录第一个 *5 >minnum的索引
n5 += 1
next += 1
return res[index-1]