文章目录
一、一遍哈希表
- 因为涉及到数组元素的快速查找,同时需要记录元素的值和下标,因此采用哈希表,std:unordered_map;
- 用target - nums[i]判断是否在map中,如果有,就说明存在两个数的和等于target;如果没有则将nums[i]和他的下标放入map中;
代码如下(示例):
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map<int,int> map;
//创建一个unordered_map,其中第一个int存储nums的值,第二个int存储nums的索引
for(int i = 0; i < nums.size(); i++)
{
auto x = map.find(target - nums[i]);
if(x != map.end())
{
return{x->second,i};
}
map.insert(pair<int,int>(nums[i],i));
}
return {};
}
};