mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
59 lines
3.6 KiB
HTML
59 lines
3.6 KiB
HTML
<p>一个任务管理器系统可以让用户管理他们的任务,每个任务有一个优先级。这个系统需要高效地处理添加、修改、执行和删除任务的操作。</p>
|
||
|
||
<p>请你设计一个 <code>TaskManager</code> 类:</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p><code>TaskManager(vector<vector<int>>& tasks)</code> 初始化任务管理器,初始化的数组格式为 <code>[userId, taskId, priority]</code> ,表示给 <code>userId</code> 添加一个优先级为 <code>priority</code> 的任务 <code>taskId</code> 。</p>
|
||
</li>
|
||
<li>
|
||
<p><code>void add(int userId, int taskId, int priority)</code> 表示给用户 <code>userId</code> 添加一个优先级为 <code>priority</code> 的任务 <code>taskId</code> ,输入 <strong>保证 </strong><code>taskId</code> 不在系统中。</p>
|
||
</li>
|
||
<li>
|
||
<p><code>void edit(int taskId, int newPriority)</code> 更新已经存在的任务 <code>taskId</code> 的优先级为 <code>newPriority</code> 。输入 <strong>保证</strong> <code>taskId</code> 存在于系统中。</p>
|
||
</li>
|
||
<li>
|
||
<p><code>void rmv(int taskId)</code> 从系统中删除任务 <code>taskId</code> 。输入 <strong>保证</strong> <code>taskId</code> 存在于系统中。</p>
|
||
</li>
|
||
<li>
|
||
<p><code>int execTop()</code> 执行所有用户的任务中优先级 <strong>最高</strong> 的任务,如果有多个任务优先级相同且都为 <strong>最高</strong> ,执行 <code>taskId</code> 最大的一个任务。执行完任务后,<code>taskId</code><strong> </strong>从系统中 <strong>删除</strong> 。同时请你返回这个任务所属的用户 <code>userId</code> 。如果不存在任何任务,返回 -1 。</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>注意</strong> ,一个用户可能被安排多个任务。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<div class="example-block">
|
||
<p><strong>输入:</strong><br />
|
||
<span class="example-io">["TaskManager", "add", "edit", "execTop", "rmv", "add", "execTop"]<br />
|
||
[[[[1, 101, 10], [2, 102, 20], [3, 103, 15]]], [4, 104, 5], [102, 8], [], [101], [5, 105, 15], []]</span></p>
|
||
|
||
<p><strong>输出:</strong><br />
|
||
<span class="example-io">[null, null, null, 3, null, null, 5] </span></p>
|
||
|
||
<p><strong>解释:</strong></p>
|
||
TaskManager taskManager = new TaskManager([[1, 101, 10], [2, 102, 20], [3, 103, 15]]); // 分别给用户 1 ,2 和 3 初始化一个任务。<br />
|
||
taskManager.add(4, 104, 5); // 给用户 4 添加优先级为 5 的任务 104 。<br />
|
||
taskManager.edit(102, 8); // 更新任务 102 的优先级为 8 。<br />
|
||
taskManager.execTop(); // 返回 3 。执行用户 3 的任务 103 。<br />
|
||
taskManager.rmv(101); // 将系统中的任务 101 删除。<br />
|
||
taskManager.add(5, 105, 15); // 给用户 5 添加优先级为 15 的任务 105 。<br />
|
||
taskManager.execTop(); // 返回 5 。执行用户 5 的任务 105 。</div>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= tasks.length <= 10<sup>5</sup></code></li>
|
||
<li><code>0 <= userId <= 10<sup>5</sup></code></li>
|
||
<li><code>0 <= taskId <= 10<sup>5</sup></code></li>
|
||
<li><code>0 <= priority <= 10<sup>9</sup></code></li>
|
||
<li><code>0 <= newPriority <= 10<sup>9</sup></code></li>
|
||
<li><code>add</code> ,<code>edit</code> ,<code>rmv</code> 和 <code>execTop</code> 的总操作次数 <strong>加起来</strong> 不超过 <code>2 * 10<sup>5</sup></code> 次。</li>
|
||
<li>输入保证 <code>taskId</code> 是合法的。</li>
|
||
</ul>
|