{ "data": { "question": { "questionId": "3678", "questionFrontendId": "3408", "categoryTitle": "Algorithms", "boundTopicId": 3037721, "title": "Design Task Manager", "titleSlug": "design-task-manager", "content": "

There is a task management system that allows users to manage their tasks, each associated with a priority. The system should efficiently handle adding, modifying, executing, and removing tasks.

\n\n

Implement the TaskManager class:

\n\n\n\n

Note that a user may be assigned multiple tasks.

\n\n

 

\n

Example 1:

\n\n
\n

Input:
\n["TaskManager", "add", "edit", "execTop", "rmv", "add", "execTop"]
\n[[[[1, 101, 10], [2, 102, 20], [3, 103, 15]]], [4, 104, 5], [102, 8], [], [101], [5, 105, 15], []]

\n\n

Output:
\n[null, null, null, 3, null, null, 5]

\n\n

Explanation

\nTaskManager taskManager = new TaskManager([[1, 101, 10], [2, 102, 20], [3, 103, 15]]); // Initializes with three tasks for Users 1, 2, and 3.
\ntaskManager.add(4, 104, 5); // Adds task 104 with priority 5 for User 4.
\ntaskManager.edit(102, 8); // Updates priority of task 102 to 8.
\ntaskManager.execTop(); // return 3. Executes task 103 for User 3.
\ntaskManager.rmv(101); // Removes task 101 from the system.
\ntaskManager.add(5, 105, 15); // Adds task 105 with priority 15 for User 5.
\ntaskManager.execTop(); // return 5. Executes task 105 for User 5.
\n\n

 

\n

Constraints:

\n\n\n", "translatedTitle": "设计任务管理器", "translatedContent": "

一个任务管理器系统可以让用户管理他们的任务,每个任务有一个优先级。这个系统需要高效地处理添加、修改、执行和删除任务的操作。

\n\n

请你设计一个 TaskManager 类:

\n\n\n\n

注意 ,一个用户可能被安排多个任务。

\n\n

 

\n\n

示例 1:

\n\n
\n

输入:
\n[\"TaskManager\", \"add\", \"edit\", \"execTop\", \"rmv\", \"add\", \"execTop\"]
\n[[[[1, 101, 10], [2, 102, 20], [3, 103, 15]]], [4, 104, 5], [102, 8], [], [101], [5, 105, 15], []]

\n\n

输出:
\n[null, null, null, 3, null, null, 5]

\n\n

解释:

\nTaskManager taskManager = new TaskManager([[1, 101, 10], [2, 102, 20], [3, 103, 15]]); // 分别给用户 1 ,2 和 3 初始化一个任务。
\ntaskManager.add(4, 104, 5); // 给用户 4 添加优先级为 5 的任务 104 。
\ntaskManager.edit(102, 8); // 更新任务 102 的优先级为 8 。
\ntaskManager.execTop(); // 返回 3 。执行用户 3 的任务 103 。
\ntaskManager.rmv(101); // 将系统中的任务 101 删除。
\ntaskManager.add(5, 105, 15); // 给用户 5 添加优先级为 15 的任务 105 。
\ntaskManager.execTop(); // 返回 5 。执行用户 5 的任务 105 。
\n\n

 

\n\n

提示:

\n\n\n", "isPaidOnly": false, "difficulty": "Medium", "likes": 2, "dislikes": 0, "isLiked": null, "similarQuestions": "[]", "contributors": [], "langToValidPlayground": "{\"cpp\": false, \"java\": false, \"python\": false, \"python3\": false, \"mysql\": false, \"mssql\": false, \"oraclesql\": false, \"c\": false, \"csharp\": false, \"javascript\": false, \"typescript\": false, \"bash\": false, \"php\": false, \"swift\": false, \"kotlin\": false, \"dart\": false, \"golang\": false, \"ruby\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"rust\": false, \"racket\": false, \"erlang\": false, \"elixir\": false, \"pythondata\": false, \"react\": false, \"vanillajs\": false, \"postgresql\": false, \"cangjie\": false}", "topicTags": [ { "name": "Design", "slug": "design", "translatedName": "设计", "__typename": "TopicTagNode" }, { "name": "Hash Table", "slug": "hash-table", "translatedName": "哈希表", "__typename": "TopicTagNode" }, { "name": "Ordered Set", "slug": "ordered-set", "translatedName": "有序集合", "__typename": "TopicTagNode" }, { "name": "Heap (Priority Queue)", "slug": "heap-priority-queue", "translatedName": "堆(优先队列)", "__typename": "TopicTagNode" } ], "companyTagStats": null, "codeSnippets": [ { "lang": "C++", "langSlug": "cpp", "code": "class TaskManager {\npublic:\n TaskManager(vector>& tasks) {\n \n }\n \n void add(int userId, int taskId, int priority) {\n \n }\n \n void edit(int taskId, int newPriority) {\n \n }\n \n void rmv(int taskId) {\n \n }\n \n int execTop() {\n \n }\n};\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * TaskManager* obj = new TaskManager(tasks);\n * obj->add(userId,taskId,priority);\n * obj->edit(taskId,newPriority);\n * obj->rmv(taskId);\n * int param_4 = obj->execTop();\n */", "__typename": "CodeSnippetNode" }, { "lang": "Java", "langSlug": "java", "code": "class TaskManager {\n\n public TaskManager(List> tasks) {\n \n }\n \n public void add(int userId, int taskId, int priority) {\n \n }\n \n public void edit(int taskId, int newPriority) {\n \n }\n \n public void rmv(int taskId) {\n \n }\n \n public int execTop() {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * TaskManager obj = new TaskManager(tasks);\n * obj.add(userId,taskId,priority);\n * obj.edit(taskId,newPriority);\n * obj.rmv(taskId);\n * int param_4 = obj.execTop();\n */", "__typename": "CodeSnippetNode" }, { "lang": "Python", "langSlug": "python", "code": "class TaskManager(object):\n\n def __init__(self, tasks):\n \"\"\"\n :type tasks: List[List[int]]\n \"\"\"\n \n\n def add(self, userId, taskId, priority):\n \"\"\"\n :type userId: int\n :type taskId: int\n :type priority: int\n :rtype: None\n \"\"\"\n \n\n def edit(self, taskId, newPriority):\n \"\"\"\n :type taskId: int\n :type newPriority: int\n :rtype: None\n \"\"\"\n \n\n def rmv(self, taskId):\n \"\"\"\n :type taskId: int\n :rtype: None\n \"\"\"\n \n\n def execTop(self):\n \"\"\"\n :rtype: int\n \"\"\"\n \n\n\n# Your TaskManager object will be instantiated and called as such:\n# obj = TaskManager(tasks)\n# obj.add(userId,taskId,priority)\n# obj.edit(taskId,newPriority)\n# obj.rmv(taskId)\n# param_4 = obj.execTop()", "__typename": "CodeSnippetNode" }, { "lang": "Python3", "langSlug": "python3", "code": "class TaskManager:\n\n def __init__(self, tasks: List[List[int]]):\n \n\n def add(self, userId: int, taskId: int, priority: int) -> None:\n \n\n def edit(self, taskId: int, newPriority: int) -> None:\n \n\n def rmv(self, taskId: int) -> None:\n \n\n def execTop(self) -> int:\n \n\n\n# Your TaskManager object will be instantiated and called as such:\n# obj = TaskManager(tasks)\n# obj.add(userId,taskId,priority)\n# obj.edit(taskId,newPriority)\n# obj.rmv(taskId)\n# param_4 = obj.execTop()", "__typename": "CodeSnippetNode" }, { "lang": "C", "langSlug": "c", "code": "\n\n\ntypedef struct {\n \n} TaskManager;\n\n\nTaskManager* taskManagerCreate(int** tasks, int tasksSize, int* tasksColSize) {\n \n}\n\nvoid taskManagerAdd(TaskManager* obj, int userId, int taskId, int priority) {\n \n}\n\nvoid taskManagerEdit(TaskManager* obj, int taskId, int newPriority) {\n \n}\n\nvoid taskManagerRmv(TaskManager* obj, int taskId) {\n \n}\n\nint taskManagerExecTop(TaskManager* obj) {\n \n}\n\nvoid taskManagerFree(TaskManager* obj) {\n \n}\n\n/**\n * Your TaskManager struct will be instantiated and called as such:\n * TaskManager* obj = taskManagerCreate(tasks, tasksSize, tasksColSize);\n * taskManagerAdd(obj, userId, taskId, priority);\n \n * taskManagerEdit(obj, taskId, newPriority);\n \n * taskManagerRmv(obj, taskId);\n \n * int param_4 = taskManagerExecTop(obj);\n \n * taskManagerFree(obj);\n*/", "__typename": "CodeSnippetNode" }, { "lang": "C#", "langSlug": "csharp", "code": "public class TaskManager {\n\n public TaskManager(IList> tasks) {\n \n }\n \n public void Add(int userId, int taskId, int priority) {\n \n }\n \n public void Edit(int taskId, int newPriority) {\n \n }\n \n public void Rmv(int taskId) {\n \n }\n \n public int ExecTop() {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * TaskManager obj = new TaskManager(tasks);\n * obj.Add(userId,taskId,priority);\n * obj.Edit(taskId,newPriority);\n * obj.Rmv(taskId);\n * int param_4 = obj.ExecTop();\n */", "__typename": "CodeSnippetNode" }, { "lang": "JavaScript", "langSlug": "javascript", "code": "/**\n * @param {number[][]} tasks\n */\nvar TaskManager = function(tasks) {\n \n};\n\n/** \n * @param {number} userId \n * @param {number} taskId \n * @param {number} priority\n * @return {void}\n */\nTaskManager.prototype.add = function(userId, taskId, priority) {\n \n};\n\n/** \n * @param {number} taskId \n * @param {number} newPriority\n * @return {void}\n */\nTaskManager.prototype.edit = function(taskId, newPriority) {\n \n};\n\n/** \n * @param {number} taskId\n * @return {void}\n */\nTaskManager.prototype.rmv = function(taskId) {\n \n};\n\n/**\n * @return {number}\n */\nTaskManager.prototype.execTop = function() {\n \n};\n\n/** \n * Your TaskManager object will be instantiated and called as such:\n * var obj = new TaskManager(tasks)\n * obj.add(userId,taskId,priority)\n * obj.edit(taskId,newPriority)\n * obj.rmv(taskId)\n * var param_4 = obj.execTop()\n */", "__typename": "CodeSnippetNode" }, { "lang": "TypeScript", "langSlug": "typescript", "code": "class TaskManager {\n constructor(tasks: number[][]) {\n \n }\n\n add(userId: number, taskId: number, priority: number): void {\n \n }\n\n edit(taskId: number, newPriority: number): void {\n \n }\n\n rmv(taskId: number): void {\n \n }\n\n execTop(): number {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * var obj = new TaskManager(tasks)\n * obj.add(userId,taskId,priority)\n * obj.edit(taskId,newPriority)\n * obj.rmv(taskId)\n * var param_4 = obj.execTop()\n */", "__typename": "CodeSnippetNode" }, { "lang": "PHP", "langSlug": "php", "code": "class TaskManager {\n /**\n * @param Integer[][] $tasks\n */\n function __construct($tasks) {\n \n }\n \n /**\n * @param Integer $userId\n * @param Integer $taskId\n * @param Integer $priority\n * @return NULL\n */\n function add($userId, $taskId, $priority) {\n \n }\n \n /**\n * @param Integer $taskId\n * @param Integer $newPriority\n * @return NULL\n */\n function edit($taskId, $newPriority) {\n \n }\n \n /**\n * @param Integer $taskId\n * @return NULL\n */\n function rmv($taskId) {\n \n }\n \n /**\n * @return Integer\n */\n function execTop() {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * $obj = TaskManager($tasks);\n * $obj->add($userId, $taskId, $priority);\n * $obj->edit($taskId, $newPriority);\n * $obj->rmv($taskId);\n * $ret_4 = $obj->execTop();\n */", "__typename": "CodeSnippetNode" }, { "lang": "Swift", "langSlug": "swift", "code": "\nclass TaskManager {\n\n init(_ tasks: [[Int]]) {\n \n }\n \n func add(_ userId: Int, _ taskId: Int, _ priority: Int) {\n \n }\n \n func edit(_ taskId: Int, _ newPriority: Int) {\n \n }\n \n func rmv(_ taskId: Int) {\n \n }\n \n func execTop() -> Int {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * let obj = TaskManager(tasks)\n * obj.add(userId, taskId, priority)\n * obj.edit(taskId, newPriority)\n * obj.rmv(taskId)\n * let ret_4: Int = obj.execTop()\n */", "__typename": "CodeSnippetNode" }, { "lang": "Kotlin", "langSlug": "kotlin", "code": "class TaskManager(tasks: List>) {\n\n fun add(userId: Int, taskId: Int, priority: Int) {\n \n }\n\n fun edit(taskId: Int, newPriority: Int) {\n \n }\n\n fun rmv(taskId: Int) {\n \n }\n\n fun execTop(): Int {\n \n }\n\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * var obj = TaskManager(tasks)\n * obj.add(userId,taskId,priority)\n * obj.edit(taskId,newPriority)\n * obj.rmv(taskId)\n * var param_4 = obj.execTop()\n */", "__typename": "CodeSnippetNode" }, { "lang": "Dart", "langSlug": "dart", "code": "class TaskManager {\n\n TaskManager(List> tasks) {\n \n }\n \n void add(int userId, int taskId, int priority) {\n \n }\n \n void edit(int taskId, int newPriority) {\n \n }\n \n void rmv(int taskId) {\n \n }\n \n int execTop() {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * TaskManager obj = TaskManager(tasks);\n * obj.add(userId,taskId,priority);\n * obj.edit(taskId,newPriority);\n * obj.rmv(taskId);\n * int param4 = obj.execTop();\n */", "__typename": "CodeSnippetNode" }, { "lang": "Go", "langSlug": "golang", "code": "type TaskManager struct {\n \n}\n\n\nfunc Constructor(tasks [][]int) TaskManager {\n \n}\n\n\nfunc (this *TaskManager) Add(userId int, taskId int, priority int) {\n \n}\n\n\nfunc (this *TaskManager) Edit(taskId int, newPriority int) {\n \n}\n\n\nfunc (this *TaskManager) Rmv(taskId int) {\n \n}\n\n\nfunc (this *TaskManager) ExecTop() int {\n \n}\n\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * obj := Constructor(tasks);\n * obj.Add(userId,taskId,priority);\n * obj.Edit(taskId,newPriority);\n * obj.Rmv(taskId);\n * param_4 := obj.ExecTop();\n */", "__typename": "CodeSnippetNode" }, { "lang": "Ruby", "langSlug": "ruby", "code": "class TaskManager\n\n=begin\n :type tasks: Integer[][]\n=end\n def initialize(tasks)\n \n end\n\n\n=begin\n :type user_id: Integer\n :type task_id: Integer\n :type priority: Integer\n :rtype: Void\n=end\n def add(user_id, task_id, priority)\n \n end\n\n\n=begin\n :type task_id: Integer\n :type new_priority: Integer\n :rtype: Void\n=end\n def edit(task_id, new_priority)\n \n end\n\n\n=begin\n :type task_id: Integer\n :rtype: Void\n=end\n def rmv(task_id)\n \n end\n\n\n=begin\n :rtype: Integer\n=end\n def exec_top()\n \n end\n\n\nend\n\n# Your TaskManager object will be instantiated and called as such:\n# obj = TaskManager.new(tasks)\n# obj.add(user_id, task_id, priority)\n# obj.edit(task_id, new_priority)\n# obj.rmv(task_id)\n# param_4 = obj.exec_top()", "__typename": "CodeSnippetNode" }, { "lang": "Scala", "langSlug": "scala", "code": "class TaskManager(_tasks: List[List[Int]]) {\n\n def add(userId: Int, taskId: Int, priority: Int): Unit = {\n \n }\n\n def edit(taskId: Int, newPriority: Int): Unit = {\n \n }\n\n def rmv(taskId: Int): Unit = {\n \n }\n\n def execTop(): Int = {\n \n }\n\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * val obj = new TaskManager(tasks)\n * obj.add(userId,taskId,priority)\n * obj.edit(taskId,newPriority)\n * obj.rmv(taskId)\n * val param_4 = obj.execTop()\n */", "__typename": "CodeSnippetNode" }, { "lang": "Rust", "langSlug": "rust", "code": "struct TaskManager {\n\n}\n\n\n/** \n * `&self` means the method takes an immutable reference.\n * If you need a mutable reference, change it to `&mut self` instead.\n */\nimpl TaskManager {\n\n fn new(tasks: Vec>) -> Self {\n \n }\n \n fn add(&self, user_id: i32, task_id: i32, priority: i32) {\n \n }\n \n fn edit(&self, task_id: i32, new_priority: i32) {\n \n }\n \n fn rmv(&self, task_id: i32) {\n \n }\n \n fn exec_top(&self) -> i32 {\n \n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * let obj = TaskManager::new(tasks);\n * obj.add(userId, taskId, priority);\n * obj.edit(taskId, newPriority);\n * obj.rmv(taskId);\n * let ret_4: i32 = obj.exec_top();\n */", "__typename": "CodeSnippetNode" }, { "lang": "Racket", "langSlug": "racket", "code": "(define task-manager%\n (class object%\n (super-new)\n \n ; tasks : (listof (listof exact-integer?))\n (init-field\n tasks)\n \n ; add : exact-integer? exact-integer? exact-integer? -> void?\n (define/public (add user-id task-id priority)\n )\n ; edit : exact-integer? exact-integer? -> void?\n (define/public (edit task-id new-priority)\n )\n ; rmv : exact-integer? -> void?\n (define/public (rmv task-id)\n )\n ; exec-top : -> exact-integer?\n (define/public (exec-top)\n )))\n\n;; Your task-manager% object will be instantiated and called as such:\n;; (define obj (new task-manager% [tasks tasks]))\n;; (send obj add user-id task-id priority)\n;; (send obj edit task-id new-priority)\n;; (send obj rmv task-id)\n;; (define param_4 (send obj exec-top))", "__typename": "CodeSnippetNode" }, { "lang": "Erlang", "langSlug": "erlang", "code": "-spec task_manager_init_(Tasks :: [[integer()]]) -> any().\ntask_manager_init_(Tasks) ->\n .\n\n-spec task_manager_add(UserId :: integer(), TaskId :: integer(), Priority :: integer()) -> any().\ntask_manager_add(UserId, TaskId, Priority) ->\n .\n\n-spec task_manager_edit(TaskId :: integer(), NewPriority :: integer()) -> any().\ntask_manager_edit(TaskId, NewPriority) ->\n .\n\n-spec task_manager_rmv(TaskId :: integer()) -> any().\ntask_manager_rmv(TaskId) ->\n .\n\n-spec task_manager_exec_top() -> integer().\ntask_manager_exec_top() ->\n .\n\n\n%% Your functions will be called as such:\n%% task_manager_init_(Tasks),\n%% task_manager_add(UserId, TaskId, Priority),\n%% task_manager_edit(TaskId, NewPriority),\n%% task_manager_rmv(TaskId),\n%% Param_4 = task_manager_exec_top(),\n\n%% task_manager_init_ will be called before every test case, in which you can do some necessary initializations.", "__typename": "CodeSnippetNode" }, { "lang": "Elixir", "langSlug": "elixir", "code": "defmodule TaskManager do\n @spec init_(tasks :: [[integer]]) :: any\n def init_(tasks) do\n \n end\n\n @spec add(user_id :: integer, task_id :: integer, priority :: integer) :: any\n def add(user_id, task_id, priority) do\n \n end\n\n @spec edit(task_id :: integer, new_priority :: integer) :: any\n def edit(task_id, new_priority) do\n \n end\n\n @spec rmv(task_id :: integer) :: any\n def rmv(task_id) do\n \n end\n\n @spec exec_top() :: integer\n def exec_top() do\n \n end\nend\n\n# Your functions will be called as such:\n# TaskManager.init_(tasks)\n# TaskManager.add(user_id, task_id, priority)\n# TaskManager.edit(task_id, new_priority)\n# TaskManager.rmv(task_id)\n# param_4 = TaskManager.exec_top()\n\n# TaskManager.init_ will be called before every test case, in which you can do some necessary initializations.", "__typename": "CodeSnippetNode" }, { "lang": "Cangjie", "langSlug": "cangjie", "code": "class TaskManager {\n init(tasks: ArrayList>) {\n\n }\n \n func add(userId: Int64, taskId: Int64, priority: Int64): Unit {\n\n }\n \n func edit(taskId: Int64, newPriority: Int64): Unit {\n\n }\n \n func rmv(taskId: Int64): Unit {\n\n }\n \n func execTop(): Int64 {\n\n }\n}\n\n/**\n * Your TaskManager object will be instantiated and called as such:\n * let obj: TaskManager = TaskManager(tasks)\n * obj.add(userId,taskId,priority)\n * obj.edit(taskId,newPriority)\n * obj.rmv(taskId)\n * let param_4 = obj.execTop()\n */", "__typename": "CodeSnippetNode" } ], "stats": "{\"totalAccepted\": \"1.1K\", \"totalSubmission\": \"3.4K\", \"totalAcceptedRaw\": 1123, \"totalSubmissionRaw\": 3372, \"acRate\": \"33.3%\"}", "hints": [], "solution": null, "status": null, "sampleTestCase": "[\"TaskManager\",\"add\",\"edit\",\"execTop\",\"rmv\",\"add\",\"execTop\"]\n[[[[1,101,10],[2,102,20],[3,103,15]]],[4,104,5],[102,8],[],[101],[5,105,15],[]]", "metaData": "{\n \"classname\": \"TaskManager\",\n \"constructor\": {\n \"params\": [\n {\n \"type\": \"list>\",\n \"name\": \"tasks\"\n }\n ]\n },\n \"methods\": [\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"userId\"\n },\n {\n \"type\": \"integer\",\n \"name\": \"taskId\"\n },\n {\n \"type\": \"integer\",\n \"name\": \"priority\"\n }\n ],\n \"name\": \"add\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"taskId\"\n },\n {\n \"type\": \"integer\",\n \"name\": \"newPriority\"\n }\n ],\n \"name\": \"edit\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"taskId\"\n }\n ],\n \"name\": \"rmv\",\n \"return\": {\n \"type\": \"void\"\n }\n },\n {\n \"params\": [],\n \"name\": \"execTop\",\n \"return\": {\n \"type\": \"integer\"\n }\n }\n ],\n \"return\": {\n \"type\": \"boolean\"\n },\n \"systemdesign\": true,\n \"manual\": false\n}", "judgerAvailable": true, "judgeType": "large", "mysqlSchemas": [], "enableRunCode": true, "envInfo": "{\"cpp\":[\"C++\",\"

\\u7248\\u672c\\uff1aclang 19<\\/code> \\u91c7\\u7528\\u6700\\u65b0 C++ 23 \\u6807\\u51c6\\uff0c\\u5e76\\u4f7f\\u7528 GCC 14 \\u63d0\\u4f9b\\u7684 libstdc++<\\/code>\\u3002<\\/p>\\r\\n\\r\\n

\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 -O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b -gline-tables-only<\\/code> \\u53c2\\u6570\\u3002AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b out-of-bounds<\\/code> \\u548c use-after-free<\\/code> \\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\"],\"java\":[\"Java\",\"

\\u7248\\u672c\\uff1aOpenJDK 21<\\/code>\\u3002\\u4f7f\\u7528\\u7f16\\u8bd1\\u53c2\\u6570 --enable-preview --release 21<\\/code><\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u88ab\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\"

\\u7248\\u672c\\uff1a Python 2.7.18<\\/code><\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1aarray<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u6ce8\\u610f Python 2.7 \\u5df2\\u4e0d\\u518d\\u7ef4\\u62a4<\\/a>\\u3002 \\u5982\\u60f3\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u7684Python\\uff0c\\u8bf7\\u9009\\u62e9Python 3\\u3002<\\/p>\"],\"c\":[\"C\",\"

\\u7248\\u672c\\uff1aGCC 14<\\/code>\\uff0c\\u91c7\\u7528 GNU11 \\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n

\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 -O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b -g1<\\/code> \\u53c2\\u6570\\u3002 AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b out-of-bounds<\\/code> \\u548c use-after-free<\\/code> \\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n

1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n

\\r\\nstruct hash_entry {\\r\\n    int id;            \\/* we'll use this field as the key *\\/\\r\\n    char name[10];\\r\\n    UT_hash_handle hh; \\/* makes this structure hashable *\\/\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n    HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n

2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n

\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n    struct hash_entry *s;\\r\\n    HASH_FIND_INT(users, &user_id, s);\\r\\n    return s;\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n

3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n

\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n    HASH_DEL(users, user);  \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"

C# 13<\\/a> \\u8fd0\\u884c\\u5728 .NET 9 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\"

\\u7248\\u672c\\uff1aNode.js 20.10.0<\\/code><\\/p>\\r\\n\\r\\n

\\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a --harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f \\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\n

lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js\\/priority-queue@5.4.0<\\/a>\\uff0c datastructures-js\\/queue@4.2.3<\\/a> \\u4ee5\\u53ca datastructures-js\\/deque@1.0.4<\\/a>\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\"

\\u4f7f\\u7528 Ruby 3.2<\\/code> \\u6267\\u884c<\\/p>\\r\\n\\r\\n

\\u4e00\\u4e9b\\u5e38\\u7528\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u5df2\\u5728 Algorithms \\u6a21\\u5757\\u4e2d\\u63d0\\u4f9b\\uff1ahttps:\\/\\/www.rubydoc.info\\/github\\/kanwei\\/algorithms\\/Algorithms<\\/p>\"],\"swift\":[\"Swift\",\"

\\u7248\\u672c\\uff1aSwift 6.0<\\/code><\\/p>\\r\\n\\r\\n

\\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 swift-algorithms 1.2.0<\\/a>\\uff0cswift-collections 1.1.4<\\/a> \\u548c swift-numerics 1.0.2<\\/a><\\/p>\\r\\n\\r\\n

\\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 Apple\\u653e\\u51fa\\u7684\\u6700\\u65b0\\u7248Swift<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u53d1\\u73b0Swift\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u7684\\uff0c\\u8bf7\\u8054\\u7cfb\\u6211\\u4eec\\uff01\\u6211\\u4eec\\u5c06\\u5c3d\\u5feb\\u66f4\\u65b0\\u3002<\\/p>\"],\"golang\":[\"Go\",\"

\\u7248\\u672c\\uff1aGo 1.23<\\/code><\\/p>\\r\\n\\r\\n

\\u652f\\u6301 https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u548c https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods\\/v2@v2.0.0-alpha<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\"

\\u7248\\u672c\\uff1aPython 3.11<\\/code><\\/p>\\r\\n\\r\\n

\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982array<\\/a>, bisect<\\/a>, collections<\\/a>\\u3002 \\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\"

\\u7248\\u672c\\uff1aScala 3.3.1<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"

\\u7248\\u672c\\uff1aKotlin 1.9.0<\\/code><\\/p>\\r\\n\\r\\n

\\u6211\\u4eec\\u4f7f\\u7528\\u7684\\u662f JetBrains \\u63d0\\u4f9b\\u7684 experimental compiler\\u3002\\u5982\\u679c\\u60a8\\u8ba4\\u4e3a\\u60a8\\u9047\\u5230\\u4e86\\u7f16\\u8bd1\\u5668\\u76f8\\u5173\\u7684\\u95ee\\u9898\\uff0c\\u8bf7\\u5411\\u6211\\u4eec\\u53cd\\u9988<\\/p>\"],\"rust\":[\"Rust\",\"

\\u7248\\u672c\\uff1arust 1.79.0<\\/code><\\/p>\\r\\n\\r\\n

\\u652f\\u6301 crates.io \\u7684 rand<\\/a> \\u548c regex<\\/a><\\/p>\"],\"php\":[\"PHP\",\"

PHP 8.2<\\/code>.<\\/p>\\r\\n\\r\\n

With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\"

TypeScript 5.1.6<\\/p>\\r\\n\\r\\n

Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2022<\\/p>\\r\\n\\r\\n

lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n

\\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 datastructures-js\\/priority-queue@5.4.0<\\/a>\\uff0c datastructures-js\\/queue@4.2.3<\\/a> \\u4ee5\\u53ca datastructures-js\\/deque@1.0.4<\\/a>\\u3002<\\/p>\"],\"racket\":[\"Racket\",\"

Racket CS<\\/a> v8.15<\\/p>\\r\\n\\r\\n

\\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n

\\u5df2\\u9884\\u5148 (require data\\/gvector data\\/queue data\\/order data\\/heap). \\u82e5\\u9700\\u4f7f\\u7528\\u5176\\u5b83\\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u53ef\\u81ea\\u884c require\\u3002<\\/p>\"],\"erlang\":[\"Erlang\",\"Erlang\\/OTP 26\"],\"elixir\":[\"Elixir\",\"Elixir 1.17 with Erlang\\/OTP 26\"],\"dart\":[\"Dart\",\"

Dart 3.2\\u3002\\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 collection<\\/a> \\u5305<\\/p>\\r\\n\\r\\n

\\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"],\"cangjie\":[\"Cangjie\",\"

\\u7248\\u672c\\uff1a0.53.11 (cjnative)<\\/p>\\r\\n\\r\\n

\\u7f16\\u8bd1\\u53c2\\u6570\\uff1a-O2 --disable-reflection<\\/code><\\/p>\\r\\n\\r\\n

\\u5feb\\u901f\\u5165\\u95e8\\u8bf7\\u67e5\\u9605\\u300c\\u4ed3\\u9889\\u7f16\\u7a0b\\u8bed\\u8a00\\u5f00\\u53d1\\u6307\\u5357\\u300d<\\/a><\\/p>\"]}", "book": null, "isSubscribed": false, "isDailyQuestion": false, "dailyRecordStatus": null, "editorType": "CKEDITOR", "ugcQuestionId": null, "style": "LEETCODE", "exampleTestcases": "[\"TaskManager\",\"add\",\"edit\",\"execTop\",\"rmv\",\"add\",\"execTop\"]\n[[[[1,101,10],[2,102,20],[3,103,15]]],[4,104,5],[102,8],[],[101],[5,105,15],[]]", "__typename": "QuestionNode" } } }