📅  最后修改于: 2023-12-03 14:58:17.848000             🧑  作者: Mango
问题27是GATE 2017 MOCK II考试中的一个编程问题。这个问题要求实现一个函数,该函数接收一个整数列表作为输入,并返回一个布尔值,表示是否存在两个不同的元素,它们的和等于给定的目标值。
以下是问题的具体描述:
给定一个整数列表和一个目标整数值,编写一个函数find_sum_pairs(numbers: List[int], target: int) -> bool
,该函数返回一个布尔值。返回True
如果存在两个不同的元素a
和b
(a != b
),它们的和等于目标值target
。
Input: [2, 4, 5, 7, 8, 10], target = 12
Output: True
Explanation: 存在两个不同的元素的和是12,例如4和8。
Input: [1, 2, 3, 4, 5], target = 10
Output: False
Explanation: 没有两个不同的元素的和是10。
Input: [-1, 0, 1, 2, 3], target = 0
Output: True
Explanation: 存在两个不同的元素的和是0,例如-1和1。
要解决这个问题,我们可以使用一个哈希集合来存储已经遍历过的元素。我们遍历整数列表中的每个元素,对于每个元素,我们检查目标值与当前元素的差值是否已经在哈希集合中。如果是,那么说明存在两个不同的元素的和等于目标值,返回True。否则,将当前元素添加到哈希集合中继续遍历。
以下是实现该函数的Python代码:
from typing import List
def find_sum_pairs(numbers: List[int], target: int) -> bool:
num_set = set()
for num in numbers:
complement = target - num
if complement in num_set:
return True
num_set.add(num)
return False