zoukankan      html  css  js  c++  java
  • 33.丑数

    题目描述

    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
    思路:
    每次更新的时候,用当前数乘2,3,5得到的结果都是丑数,但是这样不能保证结果不重复和有序性,所以引入了三个指针。
     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     def GetUglyNumber_Solution(self, index):
     4         # write code here
     5         if index == 0:
     6             return 0
     7         twopointer = 0
     8         threepointer = 0
     9         fivepointer = 0
    10         res = [1]
    11         count = 1
    12         while count !=index:
    13             num = min(res[twopointer]*2,res[threepointer]*3,res[fivepointer]*5)
    14             res.append(num)
    15             count += 1
    16             if num == res[twopointer]*2:#这里三个if一定要是独立的if,不能是elif,因为会有相同的数,当都得到的结果相同时,指针都向后移动,这样就不会有重复的数了
    17                 twopointer+=1
    18             if num == res[threepointer]*3:
    19                 threepointer+=1
    20             if num == res[fivepointer]*5:
    21                 fivepointer+=1
    22         return res[count-1]  

    2019-12-23 09:01:16

  • 相关阅读:
    CPU使用率100%的一个原因
    Oracle 9.2.0.1升级到9.2.0.5
    Javacript同样的意思,更巧的写法
    前端面试题
    Linux shell
    vi/vim 光标移动命令
    CSS 中的分离、抽象和层叠
    practice first开张
    Linux下访问Windows的方法(原)
    Evolution收发Gmail邮件
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/12082040.html
Copyright © 2011-2022 走看看