- 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
解题思路一:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for idx in range(len(nums)):
for jdx in range(idx + 1, len(nums)):
if (nums[idx] + nums[jdx] == target):
return[idx, jdx]
这种方法的时间复杂度为 o ( n 2 ) o(n^2) o(n2)
我们考虑用哈希表将查找的时间复杂度降为
o
(
1
)
o(1)
o(1),这样整体的时间复杂度为
o
(
n
)
o(n)
o(n)
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
hashmap = {}
for idx, num in enumerate(nums):
if hashmap.get(target - num) is not None:
return [hashmap.get(target - num), idx]
hashmap[num] = idx