劍指offer 醜數 (Python)

2021-10-01 15:41:43 字數 1075 閱讀 2754

把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。

題目鏈結

因為新增的大的醜數一定小的醜數乘以2,3,5得到的值最小的乙個。

# -*- coding:utf-8 -*-

class

solution

:def

getuglynumber_solution

(self, index)

:# write code here

if index <=0:

return

0 res =[1

for i in

range

(index)

] i_2,i_3,i_5 =0,

0,0for i in

range(1

,index):if

2*res[i_2]

<=

3*res[i_3]

and2

*res[i_2]

<=

5*res[i_5]

: res[i]=2

*res[i_2]

i_2 +=

1elif

3*res[i_3]

<=

2*res[i_2]

and3

*res[i_3]

<=

5*res[i_5]

: res[i]=3

*res[i_3]

i_3 +=

1else

: res[i]=5

*res[i_5]

i_5 +=1if

3*res[i_3]

==res[i]

:i_3 +=1if

5*res[i_5]

== res[i]

: i_5 +=

1return res[index-

1]

python 醜數 劍指offer

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路 最直接的暴力解法是從1開始依次判斷數字是否為醜數,直到達到要求的醜數個數。當然這種方法肯定是會tle的,所以我們分析...

劍指offer 醜數 python

題目 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。class solution def getuglynumber solution self,index write...

劍指offer 醜數

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