一、题意
二、思考过程
这里用到的是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 {}; } };