Python編程之算法練習_001
阿新 • • 發佈:2018-03-24
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