刷leetcodehot100返航版--哈希表5/5
回顾一下之前做的哈希,貌似只有用到
unordered_set
:存储无序元素unordered_map
:存储无序键值对
代码随想录
常用代码模板2——数据结构 - AcWing
C++知识回顾-CSDN博客
1.两数之和5/5【30min】
1. 两数之和 - 力扣(LeetCode)
1.set和map分不清,set是只有值,map是键值对。
2、map的键值弄反了,找数的话,键是数,值是索引i
3.考虑如果有重复的数怎么办:不要提前把数组转成map,一边遍历一边转。
class Solution {//考虑输入
public:vector<int> twoSum(vector<int>& nums, int target) {//快速判断一个元素是否出现集合里//如果是哈希,怎么存数据//没考虑一样的元素// unordered_set<int> mySet;// for(int i= 0;i<nums.size();i++){// mySet.insert(target - nums[i]);// }// for(int i= 0;i<nums.size();i++){// auto iter = mySet.find(nums[i]);// if(iter!=mySet.end()){// continue;// }// return {i,*iter};// }unordered_map<int,int>findmap;//快速找下标//有重复的怎么办for(int i = 0;i<nums.size();i++){auto it = findmap.find(target-nums[i]);if(it != findmap.end()){return {i,it->second};}findmap[nums[i]] = i;//索引和值反了}return {};}
};