题目描述: 给定一个整数数组 nums 和一个目标值 target,找出数组中和为目标值的两个数,并返回它们的下标。假设每个输入只对应一种答案,同样的元素不能使用两次。
时间: 2024-12-18 19:38:39 浏览: 10
这是一个经典的计算机科学问题,通常称为“两数之和”(Two Sum)。在Python中,你可以使用哈希表(字典)来解决这个问题,其基本思路是遍历数组,对于每个元素nums[i],我们查找target - nums[i]是否已经在哈希表中。如果找到了,我们就找到了一对和为目标值的数,返回这两个元素的索引i和哈希表中找到的元素的索引。如果没有找到,则将当前元素及其索引添加到哈希表中继续搜索。
以下是简单的Python代码实现:
```python
def twoSum(nums, target):
hash_map = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hash_map:
return [hash_map[complement], i]
hash_map[num] = i
return None # 如果找不到符合条件的数对
# 示例:
nums = [2, 7, 11, 15]
target = 9
print(twoSum(nums, target)) # 输出: [0, 1]
```
相关问题
题目描述: 给定一个整数数组 nums 和一个目标值 target,请在数组中找出和为目标值的两个整数。 示例: 输入:nums = [2, 7, 11, 15], target = 9 输出:[, 1] 用c++解决
好的,这是一个典型的求两数之和的问题,可以使用哈希表来解决。以下是C++的代码实现:
```c++
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (hash.count(complement)) {
return {hash[complement], i};
}
hash[nums[i]] = i;
}
return {};
}
int main() {
vector<int> nums = {2, 7, 11, 15};
int target = 9;
vector<int> res = twoSum(nums, target);
for (int i = 0; i < res.size(); i++) {
cout << res[i] << " ";
}
return 0;
}
```
输出结果为:
```
0 1
```
这表示在数组中下标为0和1的两个数2和7的和为9。
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
这是一道经典的“两数之和”(Two Sum)问题,在编程领域通常会使用哈希表来解决。题目要求在一个整数数组`nums`中找到两个元素,它们的和等于给定的目标值`target`。算法的基本思路如下:
1. 创建一个空的哈希表或字典(Python中称为`dict`),用于存储每个遇到的元素及其索引。
2. 遍历数组`nums`,对于每一个元素:
- 如果`target - current_element`已经在哈希表中,则找到了一对符合条件的数,直接返回这两个元素的索引(记得将较小的那个索引作为第一个返回值)。
- 如果`target - current_element`不在哈希表中,将其添加到哈希表中,键为当前元素,值为其索引。
3. 如果遍历完整个数组都没有找到合适的对,说明不存在这样的两个元素。
以下是这个问题的一个简单Python实现示例:
```python
def twoSum(nums, target):
hash_map = {}
for i, num in enumerate(nums):
if target - num in hash_map:
return [hash_map[target - num], i]
hash_map[num] = i
return []
```
阅读全文