- **給定一個整數數組 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中列表字典的即爲哈希類型。