zoukankan      html  css  js  c++  java
  • 剑指offer 面试49题

    面试49题:

    题:丑数

    题目:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    解题代码一:时间效率不高,对每一个数都需要判断它是不是丑数(需要执行求余和除法操作)

    # -*- coding:utf-8 -*-
    class Solution:
        def GetUglyNumber_Solution(self, index):
            # write code here
            if index<=0:
                return 0
            
            number=0
            uglyFound=0
            while (uglyFound<index):
                number+=1
                if self.IsUgly(number):
                    uglyFound+=1
            return number
        
        def IsUgly(self,number):
            while number%2==0:
                number=number//2
            while number%3==0:
                number=number//3
            while number%5==0:
                number=number//5
            return True if number==1 else False

    解题代码二:推荐!“以空间换时间”

    # -*- coding:utf-8 -*-
    class Solution:
        def GetUglyNumber_Solution(self,index):
            if index<=0:
                return 0
            res=[1]
            nextIndex=1
            t2=t3=t5=0
    
            while nextIndex<index:
                min_val = min(res[t2]*2,res[t3]*3,res[t5]*5)
                res.append(min_val)
                while res[t2]*2 <= min_val:
                    t2 += 1
                while res[t3]*3 <= min_val:
                    t3 += 1
                while res[t5]*5 <= min_val:
                    t5 += 1
                nextIndex+=1
    
            return res[index-1]
  • 相关阅读:
    saltstack实战
    ubuntu16配置mysql5.7主从同步
    推荐书单
    SpringMVC : 乐鲜电子商城
    Idea 使用指南
    SpringBoot : 人人托福系统网站
    Android : SQLite 版学生系统
    Android : 相机及本地储存
    Android : ListView 学生管理
    Android : SeekBar 实现图片旋转缩放
  • 原文地址:https://www.cnblogs.com/yanmk/p/9228405.html
Copyright © 2011-2022 走看看