用Python刷LeetCode【1.TwoSum】
阿新 • • 發佈:2019-01-05
class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i in range(len(nums)): for j in range(i+1,len(nums)): if nums[i] + nums[j] == target: return (i,j)
感覺是寫的有點不嚴謹
第一次執行 6788 ms通過了
但是第二次執行時,有一個16021位的列表,執行超時了
看別人寫的是用字典,覺得不太能理解
然後仔細看了一下排名靠前的答案
嗯
字典真好用,真香
重點需要注意的幾個點
1.enumerate()函式是一個很神奇的函式,相當於把字典轉化為陣列,不過是以元租組方式呈現的
2.速度快的原因是隻做了一遍For迴圈,複雜度相當於O(n),把字典每一個值和ID遍歷一遍的同時,計算目標值和遍歷值之差是否存在與已存好的字典。遍歷到了就取出來
這條是後來補的,就兩天沒看,程式碼又看不懂了,這。。這好像是我寫的。
class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ nums_dict = {} for i, num in enumerate(nums): if num in nums_dict: return [nums_dict[num], i] else: nums_dict[target - num] = i
END-20181113-0021