劍指Offer 33 醜數(Python實現)

2021-10-03 13:48:09 字數 843 閱讀 5610

把只包含質因子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

# 1作為特殊數直接儲存

baselist = [1]

min2 = min3 = min5 = 0

curnum = 1

while curnum < index:

minnum = min(baselist[min2] * 2, baselist[min3] * 3, baselist[min5] * 5)

# 找到第乙個乘以2的結果大於當前最大醜數m的數字,也就是t2

while baselist[min2] * 2 <= minnum:

min2 += 1

# 找到第乙個乘以3的結果大於當前最大醜數m的數字,也就是t3

while baselist[min3] * 3 <= minnum:

min3 += 1

# 找到第乙個乘以5的結果大於當前最大醜數m的數字,也就是t5

while baselist[min5] * 5 <= minnum:

min5 += 1

curnum += 1

return baselist[-1]

《劍指offer》33 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。c 實現 class solution return a index 1 python實現 coding utf 8 cl...

劍指offer 33 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。通俗易懂的解釋 首先從醜數的定義我們知道,乙個醜數的因子只有2,3,5,那麼醜數p 2 x 3 y 5 z,換句話說乙個醜...

劍指offer33 醜數

題目描述 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。這裡講解的很詳細了。coding utf 8 class solution def getuglynumber ...