vector<int> twoSum(vector<int>& nums, int target)
时间: 2023-12-03 15:04:01 浏览: 31
nums, int target) {
unordered_map<int, int> map;
vector<int> result;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (map.count(complement)) {
result.push_back(map[complement]);
result.push_back(i);
return result;
}
map[nums[i]] = i;
}
return result;
}
相关问题
vector<int> twosum(vector<int>& nums, int target)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
C++代码:
```
vector<int> twosum(vector<int>& nums, int target) {
unordered_map<int, int> num_map;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (num_map.count(complement)) {
return { num_map[complement], i };
}
num_map[nums[i]] = i;
}
return {};
}
```
这段代码使用了unordered_map存储数组元素与下标的映射,然后枚举数组中的每一个元素,如果找到了和它相加等于target的元素,就返回它们的下标。否则返回空数组。
vector<int> twoSum(vector<int>& nums, int target) {
以下是一个C++的实现,使用了哈希表来优化查找速度:
```c++
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> map;
vector<int> result;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (map.find(complement) != map.end()) {
result.push_back(map[complement]);
result.push_back(i);
return result;
}
map[nums[i]] = i;
}
return result;
}
```
阅读全文