1.兩數之和-Python-LeetCode
阿新 • • 發佈:2018-12-10
一、題目
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
例1:
給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
二、解法
我們先設定一個空字典 d
,然後遍歷陣列,字典的鍵存陣列的值,字典的值存陣列的索引地址,當差在字典 d
的鍵裡時,就返回 [d[sub], i]
, 至於d[sub]
和 i
的順序,因為當前存在字典裡的值都是已經遍歷過的,所以在陣列中的位置都在 i
前面.
這裡我們用字典來存陣列的索引與值的原因是,如果我們直接用Python自帶的 index()
x in nums
的時間複雜度也為O(n)
程式碼如下:
d= {}
for i in range(len(nums)):
sub = target - nums[i]
if sub in d:
return [d[sub],i]
d[nums[i]]=i
時間 48ms,擊敗了 94.2%
結語
歡迎關注我的公眾號
瘋子的Python筆記