Skip to content

Instantly share code, notes, and snippets.

@ssaadh
Created April 2, 2023 20:45
Show Gist options
  • Save ssaadh/067048013a248f7f0802200baa0038b8 to your computer and use it in GitHub Desktop.
Save ssaadh/067048013a248f7f0802200baa0038b8 to your computer and use it in GitHub Desktop.
class ListNode:
def __init__(self, key, val, nxt):
self.key = key
self.val = val
self.next = nxt
class MyHashMap:
def __init__(self):
self.size = 19997
self.mult = 12582917
self.data = [None for _ in range(self.size)]
def hash(self, key):
return key * self.mult % self.size
def put(self, key, val):
self.remove(key)
h = self.hash(key)
node = ListNode(key, val, self.data[h])
self.data[h] = node
def get(self, key):
h = self.hash(key)
node = self.data[h]
while node:
if node.key == key: return node.val
node = node.next
return -1
def remove(self, key: int):
h = self.hash(key)
node = self.data[h]
if not node: return
if node.key == key:
self.data[h] = node.next
return
while node.next:
if node.next.key == key:
node.next = node.next.next
return
node = node.next
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment