📅  最后修改于: 2023-12-03 15:42:22.189000             🧑  作者: Mango
本题是一道算法题,要求编写一个程序来解决以下问题:
有一个整数列表,从左到右排列,每个整数仅出现一次。给定一个值k,找到列表中两个数的和等于k的下标。如果不存在这样的两个数,则返回[-1, -1]。
输入:
nums = [1, 2, 4, 7, 11, 15]
k = 15
输出:
[1, 4]
该问题可以通过使用哈希表来解决。遍历列表中的每个数,如果该数的补数不存在于哈希表中,则将该数与其下标存储在哈希表中。否则,说明找到了两个数的和等于k,返回它们的下标即可。
def two_sum(nums, k):
"""
在列表nums中找到两个数的和等于k的下标。
:param nums: 整数列表
:param k: 目标和
:return: 两个数的下标,如果不存在则返回[-1, -1]
"""
hash_table = {}
for i, num in enumerate(nums):
if k - num in hash_table:
return [hash_table[k - num], i]
hash_table[num] = i
return [-1, -1]
本题考查了哈希表的应用,哈希表可以用于快速查找特定值或者判断值是否已经存在。只需要 O(n) 的时间复杂度即可处理该问题。如果使用嵌套循环来解决该问题,则时间复杂度将达到 O(n^2),明显低效。