前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >83 - 找到第n个丑数

83 - 找到第n个丑数

原创
作者头像
ruochen
修改2021-06-16 10:23:51
修改2021-06-16 10:23:51
4740
举报

只包含2、3、5中的1个或多个因子的数称为丑数,要求按从小到大的顺序找到第n个丑数

代码语言:txt
复制
'''
2, 3, 5

6: 是丑数
14: 不是丑数,包含7

下一个丑数必定是数组的某一个丑数A * 2、B * 3、C * 5 中最小的值

M2, 之前的丑数*2都小于当前最大的丑数
    之后的丑数*2都大于当前最大的丑数
    
M3、M5
'''

def getUglyNumber(index):
    if index < 1:
        return 0
    res = [1]
    t2 = t3 = t5 = 0
    nextdex = 1
    while nextdex < index:
        minNum = min(res[t2] * 2, res[t3] * 3, res[t5] * 5)
        res.append(minNum)
        
        while res[t2] * 2 <= minNum:
            t2 += 1 
        while res[t3] * 2 <= minNum:
            t3 += 1  
        while res[t5] * 2 <= minNum:
            t5 += 1
        nextdex += 1
    return res[nextdex - 1]

print(getUglyNumber(10))
代码语言:txt
复制
512

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 只包含2、3、5中的1个或多个因子的数称为丑数,要求按从小到大的顺序找到第n个丑数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档