代码随想录第六天 2023.7.17
题目链接:1. 两数之和 - 力扣(Leetcode)https://leetcode.cn/problems/two-sum/
代码如下:
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 {};
}
};
注意:
1.map由 map<key,value> 组成,最重要的是掌握语法的格式;
2.std::map<X, Y>
实际储存了一串std::pair<const X, Y>
iter.first
会得到key,
iter.second
会得到value。
这等同于it->first
和it->second
。
3.C++ 赋予 auto 关键字新的含义,使用它来做自动类型推导。也就是说,使用了 auto 关键字以后,编译器会在编译期间自动推导出变量的类型,这样我们就不用手动指明变量的数据类型了。
auto 关键字基本的使用语法如下:
auto name = value;
name 是变量的名字,value 是变量的初始值。
4.在本题中用map存储遍历过的元素,当遍历到一个新的位置时,寻找对应的元素是否出现,比如遍历到2时寻找元素7是否出现,如果出现则为遍历过,用key存放元素,用value值存放该元素的下标
5.
if(iter != map.end())