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中语句