class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target)
{
vector <int> res;
if (numbers.empty())
{
return res;
}
// 定义哈希表,unordered_map是用哈希表实现的,复杂度为O(1),而map是用红黑树实现的
std::unordered_map<int, int> hashmap;
for (int i = 0; i < numbers.size(); i ++) {
if (hashmap.find(target - numbers[i]) != hashmap.end()) { // find函数返回hashmap.end()代表未找到,否则代表找到
// 将结果存入数组
res.push_back(hashmap[target - numbers[i]] + 1);
res.push_back(i + 1);
break;
} else {
hashmap[numbers[i]] = i; // 将未找到的值插入哈希表中,继续遍历
}
}
return res;
}
};
两数之和题
最新推荐文章于 2022-11-04 07:00:00 发布