两数之和算法:查找目标值数组下标
两数之和算法:查找目标值数组下标
题目: 给定一个整数数组 'nums' 和一个目标值 'target',请你在该数组中找出和为目标值的两个整数,并返回它们的数组下标。
逻辑结构设计:
- 开始
- 输入整数数组 'nums' 和目标值 'target'
- 初始化一个空字典 'dict'
- 遍历整数数组 'nums',对于每个数 'nums[i]',执行以下步骤: a. 计算目标值与当前数的差值 'diff = target - nums[i]' b. 如果 'diff' 在字典 'dict' 中,说明已经找到了另一个数与当前数的和为目标值,返回它们的下标 ('dict[diff]', i) c. 如果 'diff' 不在字典 'dict' 中,则将当前数及其下标 'i' 加入字典 'dict' 中
- 如果遍历完整个整数数组 'nums' 后仍未找到符合条件的两个数,则返回空列表 '[]'
- 结束
代码示例:
def two_sum(nums, target):
dict = {}
for i, num in enumerate(nums):
diff = target - num
if diff in dict:
return [dict[diff], i]
dict[num] = i
return []
使用方法:
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
print(result) # 输出: [0, 1]
解释:
代码使用字典 'dict' 来存储每个数及其下标。在遍历数组 'nums' 时,对于每个数 'nums[i]',计算目标值与当前数的差值 'diff'。如果 'diff' 在字典 'dict' 中,说明已经找到了另一个数与当前数的和为目标值,返回它们的下标 ('dict[diff]', i)。否则,将当前数及其下标 'i' 加入字典 'dict' 中。如果遍历完整个数组 'nums' 后仍未找到符合条件的两个数,则返回空列表 '[]'。
注意:
该算法的时间复杂度为 O(n),空间复杂度为 O(n),其中 n 为数组 'nums' 的长度。
原文地址: https://www.cveoy.top/t/topic/nLsI 著作权归作者所有。请勿转载和采集!