[LeetCode] Design HashMap

706. Design HashMap

Design a HashMap without using any built-in hash table libraries.

To be specific, your design should include these functions:

  • put(key, value) : Insert a (key, value) pair into the HashMap. If the value already exists in the HashMap, update the value.
  • get(key): Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key.
  • remove(key) : Remove the mapping for the value key if this map contains the mapping for the key.

Note:

  • All keys and values will be in the range of [0, 1000000].
  • The number of operations will be in the range of [1, 10000].
  • Please do not use the built-in HashMap library.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class MyHashMap {
private:
vector<map<int, int>> myHashMap;

int hash(int key) {
return key % 31;
}
public:
/** Initialize your data structure here. */
MyHashMap() {
myHashMap = vector<map<int, int>> (31, map<int,int>());
}

/** value will always be non-negative. */
void put(int key, int value) {
int index = hash(key);
myHashMap[index][key] = value;
return;
}

/** Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key */
int get(int key) {
int index = hash(key);
if(myHashMap[index].count(key))
return myHashMap[index][key];
return -1;
}

/** Removes the mapping of the specified value key if this map contains a mapping for the key */
void remove(int key) {
int index = hash(key);
if(myHashMap[index].count(key))
myHashMap[index][key] = -1;
return;
}
};

/**
* 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);
*/
Author: Song Hayoung
Link: https://songhayoung.github.io/2021/03/07/PS/LeetCode/design-hashmap/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.