您的位置:首页 > 职场人生

剑指offer--面试题34: 丑数

2016-09-27 18:14 357 查看


题目描述

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
python实现:
# -*- coding:utf-8 -*-
class Solution:
    def GetUglyNumber_Solution(self, index):
        # write code here
        if index==0 or index==1:
            return index
        uglyNums = [0]*index
        uglyNums[0] = 1
        idxOf2, idxOf3, idxOf5 = 0,0,0
        for i in range(1, index):
            uglyNums[i] = min(2*uglyNums[idxOf2], 3*uglyNums[idxOf3], 5*uglyNums[idxOf5])
            if uglyNums[i]%2==0:
                idxOf2 += 1
            if uglyNums[i]%3==0:
                idxOf3 += 1
            if uglyNums[i]%5==0:
                idxOf5 += 1           
            i += 1
        return uglyNums[-1]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: