📅  最后修改于: 2023-12-03 14:54:56.325000             🧑  作者: Mango
给定一个长度为n的整数数组和一个目标整数target,请你在数组中找到两个不同的下标i和j,使得nums[i]+nums[j]等于target。返回这两个下标。
假设每种输入只会有一个答案,且同样的元素不能被重复利用。
你可以按任意顺序返回答案。
示例1:
输入: nums = [2,7,11,15], target = 9
输出: [0,1]
解释: nums[0] + nums[1] = 2 + 7 = 9,因此返回[0,1]。
示例2:
输入: nums = [3,2,4], target = 6
输出: [1,2]
解释: nums[1] + nums[2] = 2 + 4 = 6,因此返回[1,2]。
本题的解法思路是利用哈希表来解决,可以将该数组中的每一个元素放入哈希表中,这样可以保证查找操作的复杂度是O(1)。
具体的步骤如下:
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
map = {}
for i in range(len(nums)):
if target - nums[i] in map:
return [map[target - nums[i]], i]
map[nums[i]] = i
因此,该算法的时间复杂度和空间复杂度均为O(n)。