两数之和
提示:每天定时更新力扣热题。
题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
解法一:
暴力枚举:
class Solution:
def twoSum(self,nums:List[int],target:int)->List[int]:
n = len(nums)
for i in range(n):
for j in range(i+1,n):
if nums[i] + nums[j] == target:
return [i,j]
时间复杂度O(n²);
空间复杂度O(1)。
解法二:
哈希表(字典):
class Solution:
def twoSum(self,nums:List[int],target:int)->List[int]:
num_dict = {}
for i,num in enumerate(nums):
complement = target - num
if complement in num_dict:
return [num_dict[complement],i]
num_dict[num] = i
return []
时间复杂度O(n);
空间复杂度O(1)。