哈希算法又称散列函数算法,通过映射关系,映射成更简单的查找方式,但是会存在一个关键字多个值,所以就用到了哈希算法,可以实现在常数时间内存储和查找这些关键字
数据查找算法: 二分法 深度优先 广度优先 哈希查找 顺序查找
顺序查找: 最简单 对数据逐个匹配,效率低 不适合大数据
哈希查找: 查找快 查询 操作 删除快 ---- 最好的查找算法
二分法: 效率高 但要求数据是有序的 排序需要消耗而更多时间
深度 广度优先: 对大数据效率低
# 哈希算法的基本原理: 设置一个长度为M的数组,使用哈希函数F 数据关键字的作为自变量,得到返回的唯一值
哈希是高效的存储数据的算法 又是查找算法 字典
def twosum_for(nums, target):
n = len(nums)
loop_dict = {} # 用于标记的哈希字典
for i in range(n):
if target - nums[i] in loop_dict: # 另外一个值
# return loop_dict[target - nums[i]]+1, i+1 # 返回索引
return target-nums[i], nums[i] # 返回值
loop_dict[nums[i]] = i # 字典标记
print(twosum_for([2, 3, 7, 9, 4, 6], 12))
def threesum_for(nums, target):
n = len(nums)
loop_dict = {}
for i in range(n): # 三个数相加=target
for j in range(i+1, n):
num_3 = target - nums[i] - nums[j]
if num_3 in loop_dict:
return num_3, nums[i], nums[j]
loop_dict[nums[i]] = i
loop_dict[nums[j]] = j
print(threesum_for([2, 3, 7, 9, 4, 6], 14))
因篇幅问题不能全部显示,请点此查看更多更全内容