2021年11月5日 星期五

Python-Leetcode 第一題 Dictionary

 Leetcode 第一題。

二數相加等於目標值後傳回二數位置,且陣列中值不能重覆使用。

直覺會想到用雙迴圈,第一數為最快外圈第二數為內圈,第一數和第二數相加為目標值,回傳迴圈的次數。

參考網路上針對Leetcode 第一題的作法,使用Dictionary方式有效率減少使用一個迴圈,也讓我原來陣列可以這樣用。

Dictionary字典{索引:值},使用大括號表示。


 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#LeetCode 第一題,Number中任二數相加等於目標值,在回報陣列中二數位置。

Number=[11,2,15,7]
target=9
Dictionary={}
print('迴圈次數:',len(Number))
for i in range(len(Number)):
#將目標9值減Number list裡的值,減出來的值有在Number list內,表示加起來會是目標值9。
Answer=target-Number[i]
print('第{}次字典的內容{}'.format(i,Dictionary))
print('需要的值:',Answer)
#若Answer值有在字典裡表示找到,沒有就將目前的值放入字典內。
if Answer in Dictionary:
print('回傳二值位置:',Dictionary[Answer],i)
else:
#將Number值為索引,值為次數。
Dictionary[Number[i]]=i


結果:



沒有留言:

張貼留言

Ubuntu-Journalctl查看系統日誌

 近期所使用Ubuntu系統24小時開著,進行跑Python程式使用,但跑個2~3天,排程就無法正常寄信,SSH連線也無法正常連線,經查看後為wifi連線問題,暫先使用腳本排程進行重開wifi。 以下為記錄Journalctl指令。 使用Journalctl來從系統日誌上查看看問...