Skip to content

Design Hash Map

class MyHashMap:
    def __init__(self):
        self.number_of_buckets = 1000
        self.buckets = [-1] * self.number_of_buckets

    def put(self, key: int, value: int) -> None:
        # index = key mod 1000
        index = key % self.number_of_buckets
        # if bucket exists then look for key otherwise create key
        if self.buckets[index] == -1:
            self.buckets[index] = [[key, value]]
            return
        for idx, kv in enumerate(self.buckets[index]):
            if kv[0] == key:  # if key present
                self.buckets[index][idx][1] = value
                return
        self.buckets[index].append([key, value])
        return

    def get(self, key: int) -> int:
        index = key % self.number_of_buckets
        if self.buckets[index] == -1:
            return -1
        for k, v in self.buckets[index]:
            if k == key:
                return v
        return -1

    def remove(self, key: int) -> None:
        index = key % self.number_of_buckets
        index_to_remove = -1
        if self.buckets[index] == -1:
            return
        for i, kvPair in enumerate(self.buckets[index]):
            if kvPair[0] == key:
                index_to_remove = i
                break
        if index_to_remove == -1:
            return
        else:
            del self.buckets[index][index_to_remove]