给定一个数组和一个整数目标值,请在该数组中找出和为目标值的两个整数的下标值,用哈希表写代码
时间: 2024-12-08 17:24:13 浏览: 23
js代码-给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
在Python中,我们可以使用哈希表(字典)来解决这个问题。这个问题通常被称为“两数之和”或“Two Sum”。假设我们有一个数组nums和一个目标值target,我们需要找到两个数,使得它们相加等于目标值。以下是利用哈希表的解决方案:
```python
def two_sum(nums, target):
# 创建一个空字典来存储元素及其索引
hash_table = {}
for i, num in enumerate(nums):
# 如果目标值减去当前元素存在字典中,则找到了解
if target - num in hash_table:
return [hash_table[target - num], i]
# 否则,将当前元素及它的索引添加到字典中
hash_table[num] = i
# 没有找到符合条件的两个数
return None
# 测试例子
nums = [2, 7, 11, 15]
target = 9
print(two_sum(nums, target)) # 输出:[0, 1]
```
这个算法的时间复杂度是O(n),因为我们只需要遍历一次数组。如果数组中有重复元素并且数组已经排序,还可以优化到O(log n)时间复杂度,因为查找元素时可以使用二分搜索。
阅读全文