leetcode刷题,twoSum逐行解释
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hashmap:
return [hashmap[complement], i]
hashmap[num] = i
class Solution:
def twoSum(self, nums: List[int], target: int) ->List[int]:
hashmap ={}
for i, num in enumerate(nums):
complement = target -num
if complement in hashmap:
return [hashmap[complement], i]
hashmap[num] =i
下面是逐行解释 twoSum
函数的代码:
python
复制
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
定义类 Solution
:
- 这是一种常见的做法,用于将解决方案封装在一个类中。
定义 twoSum
方法:
- 这是
Solution
类中的一个方法。 - 该方法接受两个参数:
nums
(一个整数列表)和target
(一个整数)。 - 返回值是一个整数列表,包含两个使得它们之和为
target
的数的索引。
初始化一个空字典 hashmap
:
hashmap
用于存储每个数值及其对应的索引。- 键是数值,值是该数值在
nums
列表中的索引。
python
复制
for i, num in enumerate(nums):
- 遍历
nums
列表:
- 使用
enumerate
函数同时获取每个元素的索引i
和元素值num
。
python
复制
complement = target - num
- 计算补数
complement
:
- 对于当前的
num
,计算出它的补数complement
,即target - num
。 - 补数是指与当前数相加等于目标值
target
的那个数。
python
复制
if complement in hashmap:
- 检查补数是否在
hashmap
中:
- 如果
complement
已经在hashmap
中,这意味着我们之前已经遇到过一个数值,它与当前的num
相加等于target
。
python
复制
return [hashmap[complement], i]
- 找到目标并返回结果:
- 如果找到了
complement
,返回包含两个索引的列表。 hashmap[complement]
是补数complement
的索引,i
是当前num
的索引。
python
复制
hashmap[num] = i
- 将当前
num
存入hashmap
:
- 如果
complement
不在hashmap
中,将当前的num
及其索引i
存入hashmap
中。 - 这样可以在后续迭代中快速查找补数。
总结
该算法的核心思想是利用哈希表的快速查找特性,在一次遍历中完成查找和存储操作,从而在 O(n) 时间复杂度内解决问题。