Loading

[Python手撕]实现哈希映射

class Node:
    def __init__(self,key,value,next=None):
        self.key = key
        self.value = value
        self.next = next

class MyHashMap:

    def __init__(self):
        self.array = [None]*(10**3)

    def put(self, key: int, value: int) -> None:

        index = key%(10**3)
        if not self.array[index]:
            self.array[index] = Node(key,value)
        else:
            cur = self.array[index]
            while cur and cur.next:
                if cur.key == key:
                    cur.value = value
                    return None
                cur = cur.next
            if cur.key == key:
                cur.value = value
            else:
                cur.next = Node(key,value)



    def get(self, key: int) -> int:
        index = key%(10**3)
        if not self.array[index]:
            return -1
        if self.array[index].key == key:
            return self.array[index].value
        else:
            cur = self.array[index]
            while cur and cur.key != key:
                cur = cur.next
            
            if not cur:
                return -1
            else:
                return cur.value


    def remove(self, key: int) -> None:
        index = key%(10**3)
        if not self.array[index]:
            return None
        if self.array[index].key == key:
            self.array[index] = self.array[index].next
        else:
            cur = self.array[index]
            while cur.next and cur.next.key != key:
                cur = cur.next
            if cur.next and cur.next.key == key:
                cur.next = cur.next.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)
posted @   Duancf  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示