mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
47 lines
2.3 KiB
HTML
47 lines
2.3 KiB
HTML
|
<p>设计一个数字容器系统,可以实现以下功能:</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li>在系统中给定下标处 <strong>插入</strong> 或者 <strong>替换</strong> 一个数字。</li>
|
|||
|
<li><strong>返回</strong> 系统中给定数字的最小下标。</li>
|
|||
|
</ul>
|
|||
|
|
|||
|
<p>请你实现一个 <code>NumberContainers</code> 类:</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><code>NumberContainers()</code> 初始化数字容器系统。</li>
|
|||
|
<li><code>void change(int index, int number)</code> 在下标 <code>index</code> 处填入 <code>number</code> 。如果该下标 <code>index</code> 处已经有数字了,那么用 <code>number</code> 替换该数字。</li>
|
|||
|
<li><code>int find(int number)</code> 返回给定数字 <code>number</code> 在系统中的最小下标。如果系统中没有 <code>number</code> ,那么返回 <code>-1</code> 。</li>
|
|||
|
</ul>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p><strong>示例:</strong></p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<strong>输入:</strong>
|
|||
|
["NumberContainers", "find", "change", "change", "change", "change", "find", "change", "find"]
|
|||
|
[[], [10], [2, 10], [1, 10], [3, 10], [5, 10], [10], [1, 20], [10]]
|
|||
|
<strong>输出:</strong>
|
|||
|
[null, -1, null, null, null, null, 1, null, 2]
|
|||
|
|
|||
|
<strong>解释:</strong>
|
|||
|
NumberContainers nc = new NumberContainers();
|
|||
|
nc.find(10); // 没有数字 10 ,所以返回 -1 。
|
|||
|
nc.change(2, 10); // 容器中下标为 2 处填入数字 10 。
|
|||
|
nc.change(1, 10); // 容器中下标为 1 处填入数字 10 。
|
|||
|
nc.change(3, 10); // 容器中下标为 3 处填入数字 10 。
|
|||
|
nc.change(5, 10); // 容器中下标为 5 处填入数字 10 。
|
|||
|
nc.find(10); // 数字 10 所在的下标为 1 ,2 ,3 和 5 。因为最小下标为 1 ,所以返回 1 。
|
|||
|
nc.change(1, 20); // 容器中下标为 1 处填入数字 20 。注意,下标 1 处之前为 10 ,现在被替换为 20 。
|
|||
|
nc.find(10); // 数字 10 所在下标为 2 ,3 和 5 。最小下标为 2 ,所以返回 2 。
|
|||
|
</pre>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p><strong>提示:</strong></p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><code>1 <= index, number <= 10<sup>9</sup></code></li>
|
|||
|
<li>调用 <code>change</code> 和 <code>find</code> 的 <strong>总次数</strong> 不超过 <code>10<sup>5</sup></code> 次。</li>
|
|||
|
</ul>
|