1. 程式人生 > >LeetCode 001 兩數之和 python

LeetCode 001 兩數之和 python

暴力是n平方,接下來介紹O(n)的python實現

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        data = {}
        for index, value in enumerate(nums):
            if target - value in data:
                return data[target-value] , index
            data[value] = index

這個極大提升了速度,只用遍歷一遍列表,因為字典內的查詢是常量操作,所以是O(n)

每次檢查我們target - value 在不在data中也即我們缺的那一部分有沒有被記錄,如果沒有就記錄一下,找一下個,如果有就輸出索引。