劍指offer 醜數 python

2021-09-13 17:41:02 字數 669 閱讀 9997

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

class solution:

def getuglynumber_solution(self, index):

# write code her

# 特殊情況

if index<1:

return 0

#用l2,l3,l5控制 指向沒乘過2/3/5的下乙個數

l2,l3,l5 = 0,0,0

res =

for i in range(index-1):

#將較小的存入res

#如果存入的數是 之前的數乘2 ,則 l2 指向下乙個數(沒乘過2)

#都用if 都要判斷!! 因為2*3 ,3*2 相等 是乙個數,所以 l2 l3 都要更新

if res[-1]==res[l2]*2:

l2=l2+1

if res[-1]==res[l3]*3:

l3=l3+1

if res[-1]==res[l5]*5:

l5=l5+1

return res[-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個醜數。題目鏈結 因為新增的大的醜數一定小的醜數乘以2,3,5得到的值最小的乙個。coding utf 8 class solut...

劍指offer 醜數

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