• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

LeetCode哈希算法—两数:和python实现

武飞扬头像
宓海
帮助1

哈希算法简要学习:

一、常见算法简介

顺序查找:是最简单的查找方法。需要对数据集中的逐个匹配。所以效率相对较低,不太适合大量数据的查找问题。

二分法查找:效率很高,但是要求数据必须有序。面对数据排序通常需要更多的时间。
深度优先和广度优先算法:对于大量的数据查找问题,效率并不高。这个我们后面专门讲解。
阿希查找算法:查找速度快,查询插入,删除操作简单等原因获得广泛的应用。

二、哈希的原理

以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
系列文章
更多 icon
同类精品
更多 icon
继续加载