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

  • 相关阅读:
    执行chmod -R 777 / 补救
    kill详解
    find详解
    htop详解
    C#正则表达式经典分类整理集合手册
    C# 正则表达式大全
    各种新主流.net混淆加密软件对比
    string format double
    System.Timers.Timer
    System.Threading.Timer
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/12082040.html
Copyright © 2011-2022 走看看