Java教程

算法_哈希表_两数之和

本文主要是介绍算法_哈希表_两数之和,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 两数之和
    • 1.解法
    • 2.总结
      • 算法

两数之和

leetcode链接

1.解法

遍历数组,每遍历到一个元素num就判断target-num是否在hashmap中出现过,如果出现过,则返回target-num的角标和当前元素num的角标。否则就把num存入hashmap中,接着往后遍历,直到数组结束。
在这里插入图片描述
代码如下:

def twoSum(nums,target):
    hashmap = {}
    for i,num in enumerate(nums):
        if target - num not in hashmap: # 先判断后存储
            hashmap[num] = i
        else:
            return [hashmap[target-num],i]

2.总结

算法

  1. 数组和set做哈希表的局限性

    数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。而且数组只能用于哈希值有范围的情况下。

    set是一个集合,里面放的元素只能是一个key,而两数之和这道题目,不仅要判断y是否存在而且还要记录y的下表位置,因为要返回x 和 y的下表。所以set 也不能用。

这篇关于算法_哈希表_两数之和的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!