哈希
BM50 两数之和
描述 给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。
(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)数据范围:2≤len(numbers)≤10^5 ,−10≤numbers i ≤10 ^9 ,0≤target≤10^9 要求:空间复杂度 O(n),时间复杂度 O(nlogn)
示例1
输入:[3,2,4],6
返回值:[2,3]
说明:因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以返回[2,3]
示例2
输入:[20,70,110,150],90
返回值:[1,2]
说明:20+70=90
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @param target int整型
# @return int整型一维数组
#
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
# write code here
index_list = []
# for i in range(len(numbers) - 1):
# for j in range(i + 1, len(numbers)):
# n_sum = numbers[i] + numbers[j]
# if n_sum == target:
# index_list = [i + 1, j + 1]
# return index_list
hash= dict()
for i in range(len(numbers)):
temp = target - numbers[i]
if temp not in hash:
hash[numbers[i]] = i
else:
index_list.append(hash

这篇博客介绍了四个基于哈希算法的问题:两数之和、数组中出现次数超过一半的数字、数组中只出现一次的两个数字、缺失的第一个正整数和三数之和。每个问题都给出了数据范围、要求以及解决方案的空间和时间复杂度。
最低0.47元/天 解锁文章
754

被折叠的 条评论
为什么被折叠?



