首页 > 编程语言 >[Python手撕]实现哈希映射

[Python手撕]实现哈希映射

时间:2024-09-25 11:15:56浏览次数:9  
标签:index 哈希 映射 Python self next key array cur

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)

标签:index,哈希,映射,Python,self,next,key,array,cur
From: https://www.cnblogs.com/DCFV/p/18430910

相关文章

  • 监控下抽烟检测系统 Python
    监控下抽烟检测系统具有以下优势:监控下抽烟检测系统通过视频监控设备对工地和工厂的作业区域进行实时监测,准确捕捉人员抽烟的行为。监控下抽烟检测系统采用先进的图像识别技术,能够准确识别人员抽烟的动作和烟雾。监控下抽烟检测系统一旦系统发现有人员在禁烟区域内抽烟,将立即触发预......
  • 面向企业应用程序的 Python 配置管理
    配置管理的重要性    在企业应用程序中,配置管理是最被低估的运算符,它使所有内容保持集成并平稳运行。它充当后台经理,确保所有灯光都就位,剧院队列准备就绪,演出可以顺利进行。特别是,在处理多环境部署时,使用紧密的 CI/CD 流程,一个错误的配置可能会带来应用程序范围的关闭风险。......
  • 使用python创建一个微信聊天机器人
    使用python创建一个微信聊天机器人实现的功能如下笑话天气歇后语历史上的今天核心代码:#-*-coding:utf-8-*-fromrandomimportrandintimportitchatimportreimportrequestsemojis_love=["❤️","......
  • 非煤矿山风险监测预警系统 Python
    非煤矿山风险监测预警系统具有以下优势:非煤矿山风险监测预警系统通过在煤矿关键地点安装摄像机等设备利用智能化视频识别技术,能够实时分析人员出入井口的情况,监测矿井人数变化并检测煤矿生产作业状态,在矿井出入口、各作业区域等重要位置进行全方位监测,确保覆盖矿山操作过程中的关键......
  • 基于Python+Vue开发的电影订票管理系统
    项目简介该项目是基于Python+Vue开发的电影订票管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的电影订票管理系统项目,大学生可以在实践中学习和提升自己的......
  • 基于Python+Vue开发的音乐推荐管理系统
    项目简介该项目是基于Python+Vue开发的音乐推荐管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的音乐推荐管理系统项目,大学生可以在实践中学习和提升自己的......
  • Python升级后找不到uwsgi模块
    我的家庭服务器上运行着Flask/UWSGI应用程序。最近的Ubuntu升级删除了Python3.10并安装了Python3.12。我已经创建了一个新的venv并安装了该应用程序,但它不再运行。在UWSGI日志中,它显示:ModuleNotFoundError:Nomodulenamed'wsgi'我的应用程序称为sieve,工作......
  • Chameleon 模板不替换 python 变量
    我是使用FastAPI和Python的Chameleon新用户。我在模板中有以下代码片段:${ag.name}在python代码中,我有一个类定义为:classAgeGroupInfo:definit(self,名称:str,检查:str):self.name=姓名self.checked=check视图字典包含AgeGroupInfo对象的列表......
  • 如何在 Python 中获得类似 Cron 的调度程序?
    我正在寻找一个Python库,它将提供at和cron类似的功能。我很想有一个纯Python解决方案,而不是依赖于安装在盒子上的工具;这样我就可以在没有cron的机器上运行。对于那些不熟悉cron的人:您可以根据如下表达式来安排任务:02**7/usr/bin/run......
  • 我找不到一种方法让我的 python print 语句在几秒钟后自行删除
    我正在尝试制作一款基于文本的冒险游戏,我希望能够让文本自行删除。举个例子,游戏将使用print()语句打印文本,5秒后文本将被删除或对玩家隐藏。我试图找到其他人与此问题相关的问题,并且我找不到任何信息。我不知道该使用什么命令或与之相关的任何内容,请帮忙。Ivetriedtof......