用法见:https://m.w3cschool.cn/cpp/cpp-fu8l2ppt.html
leetcode第一题两数之和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
//定义一个map对象
unordered_map<int,int> map;
for(int i=0;i<nums.size();i++){
//auto关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。
//查找的是key
auto iter = map.find(target - nums[i]);
if(iter != map.end()){
//返回map的value值
return {iter->second, i};
}
//插入(key,value)
map.insert(pair<int,int>(nums[i],i));
}
return {};
}
};
leetcode454四数相加
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int,int> map;//key:a+b的数值,value:a+b数值出现的次数
for(int i=0;i<nums1.size();i++){
for(int j=0;j<nums2.size();j++){
int sum =nums1[i]+nums2[j];
if(map.find(sum)!=map.end()){
map[sum]++;//处理map的value值
}
else{
map.insert(pair<int,int>(sum,1));
}
}
}
int res = 0;
for(int i=0;i<nums3.size();i++){
for(int j=0;j<nums4.size();j++){
int sum = nums3[i]+nums4[j];
if(map.find(0-sum)!=map.end()){
res = res + map[0-sum];
}
}
}
return res;
}
};