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++) {
// 遍历当前元素,并在map中寻找是否有匹配的key
auto iter = map.find(target - nums[i]);
if(iter != map.end()) {
return {iter->second, i};
}
// 如果没找到匹配对,就把访问过的元素和下标加入到map中
map.insert(pair<int, int>(nums[i], i));
}
return {};
}
};
1find()的使用
auto i=map.find(target-nums[i]);
if(iter!=map.end(){
return{iter->second,i};}
map存放遍历过的元素
没找到,就把自己存入map 里例如找9
1,2,3,4,5。5之前都需要把自己存里把num[i],i存里
为了知道有没有遍历一个数,用map
return最后的下标{iter ->second 遍历的元素i
for(int a:b)
从数组b依次取出元素赋值给整型变量a,
循环执行for中语句
本文介绍了如何使用C++中的unordered_map数据结构解决两数之和(TwoSum)问题,通过遍历数组nums,查找目标值与当前元素之差在map中的匹配项,如果没有则将当前元素及其索引添加至map中,最终返回匹配对的下标。

被折叠的 条评论
为什么被折叠?



