题目:两数之和
给定一个整数数组 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]
你可以尝试实现这个算法,并理解其中的逻辑和用法。祝你面试顺利!
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】