当前位置: 首页 > article >正文

Leetcode 3408. Design Task Manager

  • Leetcode 3408. Design Task Manager
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3408. Design Task Manager

1. 解题思路

这一题的核心就是怎么去设计这个数据结构使得可以快速实现以下两个功能:

  • 快速地找到优先级最高的task
  • 如何通过taskid快速找到其对应的userid以及priority信息,并对其进行修改。

前者,我们可以通过一个有序队列对其进行存储和维护,后者,我们只需要对每一个taskid构造一个字典即可。

2. 代码实现

给出python代码实现如下:

class TaskManager:

    def __init__(self, tasks: List[List[int]]):
        self.tasks = {}
        self.queue = []
        for userId, taskId, priority in tasks:
            self.add(userId, taskId, priority)
        return

    def add(self, userId: int, taskId: int, priority: int) -> None:
        self.tasks[taskId] = (userId, priority)
        bisect.insort(self.queue, (priority, taskId, userId))
        return

    def edit(self, taskId: int, newPriority: int) -> None:
        userId, priority = self.tasks[taskId]
        self.rmv(taskId)
        self.add(userId, taskId, newPriority)
        return

    def rmv(self, taskId: int) -> None:
        userId, priority = self.tasks[taskId]
        self.queue.pop(bisect.bisect_left(self.queue, (priority, taskId, userId)))
        self.tasks.pop(taskId)
        return

    def execTop(self) -> int:
        if self.queue == []:
            return -1
        priority, taskId, userId = self.queue.pop()
        return userId


# Your TaskManager object will be instantiated and called as such:
# obj = TaskManager(tasks)
# obj.add(userId,taskId,priority)
# obj.edit(taskId,newPriority)
# obj.rmv(taskId)
# param_4 = obj.execTop()

提交代码评测得到:耗时2135ms,占用内存108.4MB。


http://www.kler.cn/a/471028.html

相关文章:

  • AI投资分析:用于股票评级的大型语言模型(LLMs)
  • MATLAB仿真:基于GS算法的经大气湍流畸变涡旋光束波前校正仿真
  • python基础案例
  • 彻底学会Gradle插件版本和Gradle版本及对应关系
  • VScode使用密钥进行ssh连接服务器方法
  • 【微服务】3、配置管理
  • 详细讲一讲 JavaScript中对象的常用方法
  • 一个hive插入数据失败的问题
  • 067B-基于R语言平台Biomod2模型的物种分布建模与数据可视化-高阶课程【2025】
  • 18650电池计算器 HTML
  • 安卓OCR使用(Google ML Kit)
  • H7-TOOL固件2.27发布,新增加40多款芯片脱机烧录,含多款车轨芯片,发布LUA API手册,CAN助手增加负载率,错误状态信息检测
  • Zookeeper是如何解决脑裂问题的?
  • 【首发 1day】WordPress Crypto 插件存在前台任意用户登录漏洞(CVE-2024-9989)
  • Pytest 变量渲染
  • Unity2D初级背包设计前篇 理论分析
  • 一文讲清计算机中的镜像,以及其在计算机中的作用
  • ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代
  • YOLOv11改进 | 注意力篇 | YOLOv11引入24年空间和通道协同注意模块(SCSA),并构建C2PSA_SCSA
  • 在Spring Boot项目中使用Zookeeper和Curator实现高效、可靠的分布式锁