LeetCode哈希算法—两数:和python实现
哈希算法简要学习:
一、常见算法简介
顺序查找:是最简单的查找方法。需要对数据集中的逐个匹配。所以效率相对较低,不太适合大量数据的查找问题。
二分法查找:效率很高,但是要求数据必须有序。面对数据排序通常需要更多的时间。
深度优先和广度优先算法:对于大量的数据查找问题,效率并不高。这个我们后面专门讲解。
阿希查找算法:查找速度快,查询插入,删除操作简单等原因获得广泛的应用。
二、哈希的原理
以a = [1, 17, 5, 8, 2, 9, 20, 3, 2, 5]这个数组为例,如果要查找1到10是否在这个数组内,采用顺序查找的方式话,将会依次遍历整个数组,每次都要扫描十次,每次都要扫描n次,时间复杂度为O(n)。
此时如果使用哈希算法,可以先建立一个长度为20的table,用table的下标记录a[i]的出现次数,可以参考下图,直到遍历完整个数组
三、程序实现
python代码实现:
def twosum(nums, target):
#这个函数只能解决两个数字和,且答案有且仅有一个的情况
dict = {}
for i in range(len(nums)):
num = nums[i]
if target - num in dict:#判定target - m 是否在字典中
return (dict[target-num] 1, i 1) #存在返回连个数的下标
dict[num] = i #若不存在则记录键值对的值
s =twosum( [1, 17, 5, 8, 2, 9, 20, 3, 2, 5],11)
print('下标是:',s)
# 下标是: (5, 6)
此方法相当于,把数组num的值与位置记录在了dict字典中,再依次遍历比较得到符合条件的两数对应数组的下标。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfigji
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01