【LeetCode 13】1.两数之和
文章目录
一、题意
二、思考过程
这里用到的是hash法------map映射
map
映射是一种 <key,value>
的存储结构,可以用key保存数值,用value保存数值所在的下标。
c++
中的map有三种类型:
std::map
std::multimap
std::unordered_map
(此题选择它)
step1:实现一个hash表创建unordered_map容器
std::unordered_map <int,int>map;
step2:变量nums数组,查询map容器中是否有target-nums[i]
for(int i=0;i<nums.size();i++){
auto iter=map.find(target-nums[i]);
step3:key值不存在,则存入map
if(iter!=map.end()){
return {iter->second,i};
}
map.insert(pair<int,int>(nums[i],i));
三、完整代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map <int,int>map;
for(int i=0;i<nums.size();i++){
auto iter=map.find(target-nums[i]);
if(iter!=map.end()){
return {iter->second,i};
}
map.insert(pair<int,int>(nums[i],i));
}
return {};
}
};