散列表(Hash table,也叫哈希表),是根据**键(Key)**而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
题目1—两数之和
题目167—两数之和2-输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
说明:
返回的下标值(index1 和 index2)不是从零开始的。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:
输入: numbers = [2, 7, 11, 15], target = 9
输出: [1,2]
解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
dic = {} #这里运用字典,方便返回索引值
for index,value in enumerate(numbers): #index是下标索引,value是数值
a = target - value
if a in dic:
return [dic[a]+1,index+1]
else:
dic[value] = index
通过一次循环就解决问题,相比于暴力双循环
循环开始,通过目标值与当前value差值寻找a,如果a不在字典中,那么将它的索引存入(key是当前value),如果a在字典中,那么将索引以及当前循环索引一起return即可。