# Leetcode Design-Hash #### 2022-09-01 14:44 > ##### Data structures: > > #DS #array #linked_list > > ##### Difficulty: > > #coding_problems #difficulty_easy > > ##### Additional tags: > > #leetcode #CS_list_need_practicing > > ##### Revisions: > > N/A ##### Links: - [Link to problem](https://leetcode.com/problems/design-hashmap/) - [Explanation]() *** ### 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 the `key` already exists in the map, update the corresponding `value`. - `int get(int key)` returns the `value` to which the specified `key` is mapped, or `-1` if this map contains no mapping for the `key`. - `void remove(key)` removes the `key` and its corresponding `value` if the map contains the mapping for the `key`. - #### 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 to `put`, `get`, and `remove`. ### 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: ```cpp 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); */ ```