两数和
‘’‘给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
‘’’
一、dictionary 两次循环
def twoSum1(lst, target):
dic = {
} # 创建一个空字典,用来存放索引
for idx, x in enumerate(lst):
dic[x] = idx # 把索引放入字典
for idx, x in enumerate(lst):
# 如果能在字典里找到相加等于目标值的数
# 检查两数的值是否相等
# 1.如果不等,返回两数的索引
# 2.如果相等,
# (1)存在多个相同数:遍历时发现的索引是第一个数的索引,字典存的是最后一个的。
# 返回两数索引
# 只需对比两数索引是否相同即可检查是否存在相同的数字
# (2)两相同的值的索引相同,说明并非是列表里不同的元素,则继续向下查找
if target - x in dic:
if x != target - x:
return [dic[x], dic[target - x]]
elif idx != dic[x]:
return [idx, dic[x]]
二、优化 一次循环
def twoSum2(lst, target):
dic = {
} # 创建一个存放值与索引的字典
for idx,<