哈希算法:
比较
常见的数据查找算法,如顺序查找(最简单,效率低),二分查找(效率高,要求数据有序),深度优先广度优先搜索(对于大数据量查找效率不高),哈希算法(查找快,查询插入删除等简单)
存储
预先设置一个长度M的数组,使用哈希函数F并以数据关键字为自变量,得到唯一返回值(0~M-1)。
下图1
哈希冲突
链地址法,有N个哈希地址就有N个链表,数组Hash存放每个链表头指针
下图2
问题一:两个数的和
如给定五个数字:3,4,5,7,10。选择两个数和为N,保证有且只有一个答案
如选择两个数,和为11
解法一:
普通解法:数组排序,left和right指针分别指向第一个元素和最后一个元素,如果两个数和恰好与目标相等,则输出;若和较小,则left向右移(增大);若较大,right向左移
nums = [3, 4, 5, 7, 10]
def twoSum(nums, target):
res = [] # 存放结果编号
newnums = nums.copy()
newnums.sort() # 排序
left = 0 # 左指针
right = len(newnums) - 1 # 右指针
while left < right:
if newnums[left] + newnums[right] == target: # 相等
for i in range(len(newnums)): # 储存left下标
if nums[i] == newnums[left]:
res.append(i)
break
for i in range(len(newnums)-1, -1, -1): # right
if nums[i] == newnums[right]:
res.append(i)
&

本文深入探讨哈希算法在解决实际问题中的应用,包括两数之和、单词模式匹配、猜词游戏及词根替换等问题,展示哈希算法在提高搜索效率、减少遍历长度方面的优势。
最低0.47元/天 解锁文章
1827

被折叠的 条评论
为什么被折叠?



