文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目分析
题目分析:需要从数组nums获取两个元素,它们的和为目标值target,最容易让我们想到的就是暴力枚举遍历数组的方法,但是时间复杂度较大,于是我们也可以采用哈希表的方法,接下来主要介绍这两个方法。
二、求解
1.方法一:暴力枚举
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums) # 获取数组长度
for X in range(n-1): # 遍历每一个数X
for Y in range(X+1, n): # 遍历每一个数Y
if nums[X] + nums[Y] == target: # 是否满足X + Y = target
return [X, Y] # 返回对应索引
return [] # 没有符合条件的元素,返回空
时间复杂度:O(N2)
空间复杂度:O(1)
2.方法二:哈希表
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashtable = dict() # 创建哈希表
for i, X in enumerate(nums):
if target - X in hashtable: # 判断target
return [hashtable[target - X], i] # 返回索引
hashtable[nums[i]] = i # 哈希表不存在target - X,将X的索引值插入哈希表
return [] # 没有符合条件的元素,返回为空
时间复杂度:O(N)
空间复杂度:O(N) 主要为哈希表的开销