python-leetcode-給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的兩個整數

  • **給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的 兩個 整數。 你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個數組中同樣的元素。
  • 示例: 給定 nums = [2, 7, 11, 15],
    target = 9 因爲 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]**

方法一:

class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            index_list = []
            for i in range(len(nums)):
                for j in range(i+1, len(nums)):
                    if nums[i] + nums[j] == target:
                        index_list.append(i)
                        index_list.append(j)
            print(list(set(index_list)))
            return index_list

方法二:使用哈希表,通過以空間換取速度的方式,我們可以將查找時間從 O(n)降低到 O(1)。在python中列表字典的即爲哈希類型。

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dict_num = {}
        index_list = []
        for i in range(len(nums)):
            num = target - nums[i]
            if num not in dict_num:
                dict_num[nums[i]] = i
            else:
                index_list.append(i)
                index_list.append(dict_num[num])
        return index_list

在這裏插入圖片描述
方法二比方法一快了十多倍,原因在於方法二使用了空間換時間的思路,可以將查找時間從 O(n)降低到 O(1)。在python中列表字典的即爲哈希類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章