当然!这里是一道稍微有挑战性的算法题目:
题目:寻找无序数组中的两个数,使它们的和等于给定的目标值。返回这两个数的索引。
函数签名:
def find_two_sum(nums: List[int], target: int) -> Tuple[int, int]:
# 实现你的算法
pass
示例输入和输出:
nums = [2, 7, 11, 15]
target = 9
print(find_two_sum(nums, target))
# 输出:(0, 1)
nums = [3, 2, 4]
target = 6
print(find_two_sum(nums, target))
# 输出:(1, 2)
nums = [3, 3]
target = 6
print(find_two_sum(nums, target))
# 输出:(0, 1)
这道题目可以通过使用哈希表来解决。我们可以遍历数组,对于每个元素,将目标值减去当前元素得到一个差值。然后,我们检查这个差值是否在之前遍历过的元素中出现过,如果出现过,那么就找到了两个数的和等于目标值。
你可以使用字典(哈希表)来存储已经遍历过的元素及其索引。在遍历过程中,检查当前元素的差值是否在字典中,如果在,那么就找到了两个数的和等于目标值。
请尝试实现这个函数 find_two_sum
,解决这个算法题。如果你有任何疑问,请随时提问。
def find_two_nums(nums, target):
num_set = set()
for i, num in enumerate(nums):
complement = target - num
if complement in num_set:
return (nums.index(complement), i)
num_set.add(num)
return None
nums = [2, 7, 11, 15]
target = 9
print(find_two_nums(nums, target))
nums = [3, 2, 4]
target = 6
print(find_two_nums(nums, target))
nums = [3, 3]
target = 6
print(find_two_nums(nums, target))