1. 程式人生 > >Python編程之算法練習_001

Python編程之算法練習_001

clas log ont spa list app index rtti pan

聲明:題目出自《劍指Offer》。算法原理請自行找書擼, 不廢話。直接上Python版本代碼。

題目:求從小到大的順序的第1500個醜數。我們把只包含因子 2、3 和 5 的數稱作醜數(Ugly Number)

 1 #計算第1500個醜數
 2 #1,2,3,4,5
 3 import datetime
 4 
 5 startTime = datetime.datetime.now()
 6 
 7 uglyNumberList = [1]
 8 indexList = [[0,2], [0,3], [0,5]]
 9 
10 while len(uglyNumberList) <= 1500:
11 var = min(uglyNumberList[indexList[0][0]]*2, uglyNumberList[indexList[1][0]]*3, uglyNumberList[indexList[2][0]]*5) 12 for i in range(0, 3): 13 if uglyNumberList[indexList[i][0]]*indexList[i][1] == var: 14 indexList[i][0] += 1 15 else: 16 uglyNumberList.append(var)
17 else: 18 deltaTime = datetime.datetime.now() - startTime 19 print("The 1500 ugly number is {}\nTime consuming is {} ms".format(uglyNumberList[-1], deltaTime.total_seconds()*1000))

Python編程之算法練習_001