哈希算法----两数之和

 哈希算法又称散列函数算法,通过映射关系,映射成更简单的查找方式,但是会存在一个关键字多个值,所以就用到了哈希算法,可以实现在常数时间内存储和查找这些关键字

数据查找算法:   二分法  深度优先  广度优先   哈希查找  顺序查找

顺序查找: 最简单  对数据逐个匹配,效率低 不适合大数据
哈希查找: 查找快 查询 操作 删除快     ---- 最好的查找算法
二分法:  效率高   但要求数据是有序的   排序需要消耗而更多时间
深度 广度优先: 对大数据效率低

# 哈希算法的基本原理:  设置一个长度为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))

 

你可能感兴趣的:(算法)