测试开发面试题:两数之和

文摘   2024-08-23 10:22   北京  

题目:两数之和

给定一个整数数组 nums 和一个目标值 target,在数组中找出和为目标值的两个数,并返回它们的数组下标。

你可以假设每个输入只对应一个答案,但数组中同一个元素不能使用两遍。

示例:

输入:nums = [2, 7, 11, 15]target = 9
输出:[0, 1]
解释:因为 nums[0] + nums[1] = 2 + 7 = 9,返回下标 [0, 1]

要求:
请实现一个算法,时间复杂度为 O(n)。

解题思路:

  1. 使用一个哈希表来存储数组中每个数字及其对应的下标。

  2. 遍历数组,计算目标值与当前数字的差值,如果差值在哈希表中存在,则返回当前下标和差值对应的下标。

  3. 如果不存在,则将当前数字和下标存入哈希表,key是当前数字,value是下标值。

Python 示例代码:

def two_sum(nums, target):
num_to_index = {}
for index, num in enumerate(nums):
complement = target - num
if complement in num_to_index:
return [num_to_index[complement], index]
num_to_index[num] = index
return []

# 测试
print(two_sum([2, 7, 11, 15], 9)) # 输出: [0, 1]

你可以尝试实现这个算法,并理解其中的逻辑和用法。祝你面试顺利!


想系统学习python算法的同学,可以添加吴老师微信:wulaoshi1978


光荣之路
关注光荣之路软件技术培训账号,即时收取测试开发技术的免费公开课信息,各大公司测试及开发招聘信息、最新的技术咨询、线下测试技术分享沙龙信息
 最新文章