中等
技术面试0 次浏览给定一个整数数组,找出其中两个数相加等于目标值的所有不重复组合,并返回它们的索引。
算法工程师
数组哈希表双指针算法应用
答题要点
可以采用哈希表来解决这个问题。首先创建一个空的哈希表,用于存储数组中每个元素及其对应的索引。然后遍历数组,对于每个元素,计算目标值与该元素的差值,检查差值是否在哈希表中。如果差值存在于哈希表中,说明找到了两个数相加等于目标值,将这两个数的索引添加到结果列表中。如果差值不存在于哈希表中,将当前元素及其索引存入哈希表。为了避免重复结果,可以在遍历过程中进行筛选。以下是 Python 代码示例: python def two_sum(nums, target): num_dict = {} result = [] for i, num in enumerate(nums): complement = target - num if complement in num_dict: pair = [num_dict[complement], i] pair.sort() if pair not in result: result.append(pair) num_dict[num] = i return result 该算法的时间复杂度为 O(n),因为只需要遍历一次数组,哈希表的查找操作时间复杂度为 O(1)。