class Node:
def __init__(self, key, val):
self.key = key
self.val = val
self.next = None
class MyHashMap(object):
def __init__(self):
self.hashmap = []
for i in range(10000):
self.hashmap.append(Node(None,None))
def put(self, key, val):
i = key % 10000
head = self.hashmap[i]
cur = head
while cur:
if cur.key == key:
cur.val = val
return
cur = cur.next
newNode = Node(key,val)
newNode.next = head.next
head.next = newNode
def get(self, key):
i = key % 10000
head = self.hashmap[i]
cur = head
while cur:
if cur.key == key:
return cur.val
cur = cur.next
return -1
def remove(self, key):
i = key % 10000
head = self.hashmap[i]
cur = head.next
prev = head
while cur:
if cur.key == key:
prev.next = cur.next
return
cur = cur.next
prev = prev.next
# Your MyHashMap object will be instantiated and called as such:
# obj = MyHashMap()
# obj.put(key,value)
# param_2 = obj.get(key)
# obj.remove(key)
Y2xhc3MgTm9kZToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXksIHZhbCk6CiAgICAgICAgc2VsZi5rZXkgPSBrZXkKICAgICAgICBzZWxmLnZhbCA9IHZhbAogICAgICAgIHNlbGYubmV4dCA9IE5vbmUKY2xhc3MgTXlIYXNoTWFwKG9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuaGFzaG1hcCA9IFtdCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgogICAgICAgICAgICBzZWxmLmhhc2htYXAuYXBwZW5kKE5vZGUoTm9uZSxOb25lKSkKCiAgICBkZWYgcHV0KHNlbGYsIGtleSwgdmFsKToKICAgICAgICBpID0ga2V5ICUgMTAwMDAKICAgICAgICBoZWFkID0gc2VsZi5oYXNobWFwW2ldCiAgICAgICAgY3VyID0gaGVhZAogICAgICAgIHdoaWxlIGN1cjoKICAgICAgICAgICAgaWYgY3VyLmtleSA9PSBrZXk6CiAgICAgICAgICAgICAgICBjdXIudmFsID0gdmFsCiAgICAgICAgICAgICAgICByZXR1cm4gCiAgICAgICAgICAgIGN1ciA9IGN1ci5uZXh0CiAgICAgICAgbmV3Tm9kZSA9IE5vZGUoa2V5LHZhbCkKICAgICAgICBuZXdOb2RlLm5leHQgPSBoZWFkLm5leHQKICAgICAgICBoZWFkLm5leHQgPSBuZXdOb2RlCgogICAgZGVmIGdldChzZWxmLCBrZXkpOgogICAgICAgIGkgPSBrZXkgJSAxMDAwMAogICAgICAgIGhlYWQgPSBzZWxmLmhhc2htYXBbaV0KICAgICAgICBjdXIgPSBoZWFkCiAgICAgICAgd2hpbGUgY3VyOgogICAgICAgICAgICBpZiBjdXIua2V5ID09IGtleToKICAgICAgICAgICAgICAgIHJldHVybiBjdXIudmFsCiAgICAgICAgICAgIGN1ciA9IGN1ci5uZXh0CiAgICAgICAgcmV0dXJuIC0xCiAgICBkZWYgcmVtb3ZlKHNlbGYsIGtleSk6CiAgICAgICAgaSA9IGtleSAlIDEwMDAwCiAgICAgICAgaGVhZCA9IHNlbGYuaGFzaG1hcFtpXQogICAgICAgIGN1ciA9IGhlYWQubmV4dAogICAgICAgIHByZXYgPSBoZWFkCgogICAgICAgIHdoaWxlIGN1cjoKICAgICAgICAgICAgaWYgY3VyLmtleSA9PSBrZXk6CiAgICAgICAgICAgICAgICBwcmV2Lm5leHQgPSBjdXIubmV4dAogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGN1ciA9IGN1ci5uZXh0CiAgICAgICAgICAgIHByZXYgPSBwcmV2Lm5leHQKICAgICAgICAKICAgICAgICAKCgojIFlvdXIgTXlIYXNoTWFwIG9iamVjdCB3aWxsIGJlIGluc3RhbnRpYXRlZCBhbmQgY2FsbGVkIGFzIHN1Y2g6CiMgb2JqID0gTXlIYXNoTWFwKCkKIyBvYmoucHV0KGtleSx2YWx1ZSkKIyBwYXJhbV8yID0gb2JqLmdldChrZXkpCiMgb2JqLnJlbW92ZShrZXkp