Design a hashmap without using any built-in hash table libraries.
To be specific, your design shoshould 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.
Example:
Myhashmap hashmap = new myhashmap ();
Hashmap. Put (1, 1 );
Hashmap. Put (2, 2 );
Hashmap. Get (1); // returns 1
Hashmap. Get (3); // returns-1 (not found)
Hashmap. Put (2, 1); // update the existing value
Hashmap. Get (2); // returns 1
Hashmap. Remove (2); // remove the mapping for 2
Hashmap. Get (2); // returns-1 (not found)
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.
class MyHashMap: def __init__(self): """ Initialize your data structure here. """ self.a = [] self.b = [] def put(self, key, value): """ value will always be non-negative. :type key: int :type value: int :rtype: void """ if key in self.a: pos = self.a.index(key) self.b[pos] = value else: self.a.append(key) self.b.append(value) return def get(self, key): """ Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key :type key: int :rtype: int """ if key in self.a: pos = self.a.index(key) return self.b[pos] else: return -1 def remove(self, key): """ Removes the mapping of the specified value key if this map contains a mapping for the key :type key: int :rtype: void """ if key in self.a: pos = self.a.index(key) self.a.pop(pos) self.b.pop(pos) return # Your MyHashMap object will be instantiated and called as such:# obj = MyHashMap()# obj.put(key,value)# param_2 = obj.get(key)# obj.remove(key)
706. Design hashmap