2.6 KiB
Leetcode Design-Hash
2022-09-01 14:44
Data structures:
#DS #array #linked_list
Difficulty:
#coding_problem #difficulty_easy
Additional tags:
#leetcode #CS_list_need_practicing
Revisions:
N/A
Links:
Problem
Design a HashMap without using any built-in hash table libraries.
Implement the MyHashMap
class:
MyHashMap()
initializes the object with an empty map.void put(int key, int value)
inserts a(key, value)
pair into the HashMap. If thekey
already exists in the map, update the correspondingvalue
.int get(int key)
returns thevalue
to which the specifiedkey
is mapped, or-1
if this map contains no mapping for thekey
.void remove(key)
removes thekey
and its correspondingvalue
if the map contains the mapping for thekey
.
Examples
Example 1:
Input ["MyHashMap", "put", "put", "get", "get", "put", "get", "remove", "get"] ], [1, 1], [2, 2], [1], [3], [2, 1], [2], [2], [2 Output [null, null, null, 1, -1, null, 1, null, -1]
Explanation MyHashMap myHashMap = new MyHashMap(); myHashMap.put(1, 1); // The map is now 1,1 myHashMap.put(2, 2); // The map is now 1,1], [2,2 myHashMap.get(1); // return 1, The map is now 1,1], [2,2 myHashMap.get(3); // return -1 (i.e., not found), The map is now 1,1], [2,2 myHashMap.put(2, 1); // The map is now 1,1], [2,1 (i.e., update the existing value) myHashMap.get(2); // return 1, The map is now 1,1], [2,1 myHashMap.remove(2); // remove the mapping for 2, The map is now 1,1 myHashMap.get(2); // return -1 (i.e., not found), The map is now 1,1
Constraints
0 <= key, value <= 106
- At most
104
calls will be made toput
,get
, andremove
.
Thoughts
[!summary] This is a #array problem.
Easy way:
Using array, since 10^6 size is not too large
Hard way:
Using hashes with linked list to support collision check.
Solution
Easy way:
class MyHashMap {
int myMap[1000001];
public:
MyHashMap() { fill(myMap, myMap + 1000001, -1); }
void put(int key, int value) { myMap[key] = value; }
int get(int key) { return myMap[key]; }
void remove(int key) { myMap[key] = -1; }
};
/**
* 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);
*/