劍指offer 醜數

2021-10-07 05:05:00 字數 1481 閱讀 8407

把只包含質因子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 uglylist =[1

] p2 = p3 = p5 =

0for i in range(1

,index)

: lastmax = uglylist[i-1]

while

(lastmax >= uglylist[p2]*2

):p2 +=1

while

(lastmax >= uglylist[p3]*3

):p3 +=1

while

(lastmax >= uglylist[p5]*5

):p5 +=1

uglylist.

(min

(uglylist[p2]*2

, uglylist[p3]*3

, uglylist[p5]*5

))return uglylist[-1

]

**二:

# -

*- coding:utf-8-

*-class solution:

def getuglynumber_solution

(self, index)

:# write code here

if index ==0:

return

0 baselist =[1

] min2 = min3 = min5 =

0 curnum =

1while curnum < index:

minnum =

min(baselist[min2]*2

,baselist[min3]*3

,baselist[min5]*5

) baselist.

(minnum)

while baselist[min2]*2

<= minnum:

min2 +=1

while baselist[min3]*3

<= minnum:

min3 +=1

while baselist[min5]*5

<= minnum:

min5 +=1

curnum +=1

return baselist[-1

]

劍指offer 醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。分析 參考程式設計師面試金典 偽 如下 1 初始化array和佇列 q2 q3 q5 2 將1插入array 3 分別將1 2...

劍指Offer 醜數

我們把只包含因子 2 3 和 5 的數稱作醜數 ugly number 求按從小 到大的順序的第 1500 個醜數。例如 6 8都是醜數,但 14 不是,它包含因子 7。習慣上我們把 1當做第乙個醜數。解法一 逐一判斷是否是醜數,簡單但是不夠高效 數字n是數字m的因子說明m n 0。醜數的因子只有2...

劍指offer 醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。分析 為了保證時間達到要求,可以將所求得的醜數都儲存在陣列中,然後再取出。前面的醜數乘以2 3或5中的最小的乙個是下乙個醜數。...