赞
踩
哈希算法的简介:
哈希查找算法是使用哈希函数来计算一个键值对应的地址,建立哈希表后利用哈希函数来查找到各个键值存放在表格中的地址。也就是说,把一些复杂的数据,通过函数的某种映射,映射成更加易于查找的方式。
哈希表的概念:
哈希表是存储键值和键值所对应地址的一种数据集合。哈希表中的位置,一般称为槽位,每个槽位都能保存一个数据元素并且使用一个整数命名(从0开始)
举栗子
设定一个整数数组nums=[2,7,8,9,13],再设定一个目标值target=10,我们需要找出数组中哪两个数相加的和与我们设定的目标值10相等?找出这两个数,并且返回他们的下标。
0 1 2 3 4 | |
nums= 2 7 8 9 13 target=10 | |
key 2 7 2 9 13 | |
value 0 1 2 3 4 |
例子解析:
因为2之前没有元素,相对应,因此直接将2与它的下标0写去哈希表中;
接下来的元素是7和他对应的元素target=10,那么10-7=3,因为3不在哈希表中所以将7以及它的1写入哈希表中;
下面列表遍历到的元素为8,因为target=10,那么10-8=2,2存在于哈希表中,那么2和8就是我们要找的元素,这两个元素分别对应的键值为0和2那么就会返回数组[0,2]
- class Solution():
- def towSum(self,list,target):
- Hashtable=dict() #创建哈希列表
- for i,num in enumerate(list): #遍历列表
- if target-num in Hashtable: #检测target-num在不在哈希表中
- return [Hashtable[target-num],i] #如果再返回对应的下标
- Hashtable[list[i]]=i #把num列表的元素添加到哈希表中
- return [] #不存在返回空列表
- #检验
- s=Solution()
- num=[2,7,8,9,13]
- cn=s.towSum(num,10)
- print(cn) #打印输出
·时间复杂度: O(N)
·空间复杂度: O(N)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。