📅  最后修改于: 2023-12-03 15:12:14.889000             🧑  作者: Mango
在一个大小为n的数组中,要找到两个数a和b,使得其和等于x。请给出时间复杂度为O(n)的解法。
我们可以使用哈希表来解决这个问题。具体地,我们遍历一遍数组,每个数都在哈希表中查找是否有与其相加等于x的数,如果没有则将其加入哈希表中,否则直接返回结果即可。
具体的,对于每个数num,我们计算其与目标和x的差值diff,如果哈希表中存在key为diff的值,则说明找到了符合要求的两个数,直接返回即可。否则,将num加入哈希表中并继续遍历。
这种方法的时间复杂度是O(n),空间复杂度也是O(n)。
以下是使用Python实现的代码片段:
def find_sum(nums, x):
hash_map = {}
for num in nums:
diff = x - num
if diff in hash_map:
return [diff, num]
else:
hash_map[num] = True
return None
这个函数接受一个整数数组nums和目标和x作为参数,返回一个列表,列表中包含符合要求的两个数。如果找不到,则返回None。