力扣-706题 设计哈希映射(C++)- 哈希
题目链接:https://leetcode-cn.com/problems/design-hashmap/
题目如下:
class MyHashMap {
public:
MyHashMap():data(N) {
}
void put(int key, int value) {
int t=hash(key);
for(auto it=data[t].begin();it!=data[t].end();it++){
if((*it).first==key){
(*it).second=value;
return;
}
}
data[t].push_back(make_pair(key,value));//注意用法
}
int get(int key) {
int t=hash(key);
for(auto it=data[t].begin();it!=data[t].end();it++){
if((*it).first==key) return (*it).second;
}
return -1;
}
void remove(int key) {
int t=hash(key);
for(auto it=data[t].begin();it!=data[t].end();it++){
if((*it).first==key){
data[t].erase(it);//注意用法,erase的是it的迭代器
return;
}
}
}
private:
//定义一个数组vector,在数组的每个位置作一个链表list,每个链表元素存放一个键值对pair
vector<list<pair<int,int>>> data;
static const int N=100010;
static int hash(int key){
return key%N;
}
};
/**
* Your MyHashMap object will be instantiated and called as such:
* MyHashMap* obj = new MyHashMap();
* obj->put(key,value);
* int param_2 = obj->get(key);
* obj->remove(key);
*/
版权声明:本文为qq_40467670原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。