leetcode链接
遍历数组,每遍历到一个元素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]
数组和set做哈希表的局限性
数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。而且数组只能用于哈希值有范围的情况下。
set是一个集合,里面放的元素只能是一个key,而两数之和这道题目,不仅要判断y是否存在而且还要记录y的下表位置,因为要返回x 和 y的下表。所以set 也不能用。