题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
Python3代码实现:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
# 初始化一个字典,用于存储遍历过元素的下标,字典的键是列表中的值,值是对应的下标
records = dict()
# 遍历nums列表,通过enumereat函数,遍历nums列表的每个元素value和下标index
for index, value in enumerate(nums):
# 每遍历一个值,检查target-value(当前值)是否在字典当中
if target - value in records:
# 如果找到了匹配的键,说明nums列表中存在两个数之和等于target,则返回他们的下标
# records[target - value]表示的是与index所指的元素相加等于target的值的下标
return [records[target - value], index]
# 如果没有找到匹配的键,就将当前的元素value和对应下标index记录在字典records当中
records[value] = index
# 如果遍历完还没找到两数之和,则返回一个空列表
return []
上述代码实现解释:
上述代码实现了一个函数 twoSum
,接受两个参数:一个整数列表 nums
和一个目标整数 target
。函数的目的是在 nums
列表中找到两个数的下标,使得这两个数的和等于 target
,如果找到这样的两个数的下标,则返回一个列表 [index1, index2]
,其中 index1
和 index2
分别是这两个数在 nums
列表中的下标。具体解释如下:
-
初始化一个字典
records
:用于存储遍历过的元素和它们的下标。字典的键是列表中的值,值是对应的下标。 -
遍历
nums
列表:通过enumerate
函数,代码遍历nums
列表的每个元素value
以及其下标index
。 -
查找目标值的匹配:在遍历过程中,代码检查
target - value
是否在records
字典中。如果找到了匹配的键,说明nums
列表中存在两个数的和等于target
,返回它们的下标[records[target - value], index]
。 -
记录当前元素:如果没有找到匹配的键,就将当前元素
value
和它的下标index
记录在records
字典中。 -
返回空列表:如果遍历完列表后仍然没有找到两个数的和等于
target
,则返回一个空列表[]
。
enumerate
函数解释:
enumerate
是 Python 标准库中一个内置函数,它用于在迭代一个可迭代对象(如列表、元组、字符串等)时,同时获得元素的索引(下标)和元素的值,enumerate
函数返回一个迭代器,每次迭代都会返回一个元组,该元组包含两个元素:元素的下标和元素本身。
enumerate
的基本语法如下:
enumerate(iterable, start=0)
iterable
是一个可迭代对象,例如列表、元组、字符串等。(上述题目是列表)start
是一个可选参数,表示下标的起始值,默认为0
。如果设置为其他值,则迭代开始时的下标将从该值开始。
举个例子:
my_list = ['a', 'b', 'c', 'd']
# 使用 enumerate 函数
for index, value in enumerate(my_list):
print(f"Index: {index}, Value: {value}")
在这个例子中,enumerate
函数在迭代 my_list
列表的同时返回元素的下标 index
和元素的值 value
,输出是:
Index: 0, Value: a
Index: 1, Value: b
Index: 2, Value: c
Index: 3, Value: d
可以看到 enumerate
函数在迭代 my_list
列表的过程中,将每个元素和它的下标一起返回。
综上,本文的对于力扣1. 两数之和的Python3解答,仅仅是个人学习资料记录,也十分高兴我的见解可以帮助其他的正在做这个题目的同学,基础较差,仅仅是个人见解,大神勿喷,欢迎交流,谢谢!