介绍给大家入门级别偏高,但是工作中常常忽略的Python算法 散列值或者哈希法
有这样一个需求,给定一组数据sums,要求从这组数据中拿到任意两个数,且这两个数的和等于给定的数target,最后返回这两个数的索引
示范:
# 示例:
# 给定 nums = [2, 7, 11, 15], target = 9
# 因为 nums[0] + nums[1] = 2 + 7 = 9
# 所以返回 [0, 1]
分析:
先思考一下我们该怎么来解这两个数,给定数据中显然只有 2 +7= target ,所以最简单最容易想到的就是遍历数组sums,拿到两个数字
方法一:
两层循环遍历
def solution(self, nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
return []
print(solution(([2, 7, 11, 15], 9)))
方法二 哈希法
此法简单高效,时间和空间都降了下来,是编码过程中最佳使用方法
重点出来了
def solution2(self, nums, target):
hashset = {}
for i in range(len(nums)):
if hashset.get(target - nums[i]) is != None:
return [hashset.get(target - nums[i]), i]
hashset[nums[i]] = i
print(solution2(([2, 7, 11, 15], 9)) )