mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
71 lines
4.6 KiB
HTML
71 lines
4.6 KiB
HTML
<p>一个观光景点由它的名字 <code>name</code> 和景点评分 <code>score</code> 组成,其中 <code>name</code> 是所有观光景点中 <strong>唯一</strong> 的字符串,<code>score</code> 是一个整数。景点按照最好到最坏排序。景点评分 <strong>越高</strong> ,这个景点越好。如果有两个景点的评分一样,那么 <strong>字典序较小</strong> 的景点更好。</p>
|
||
|
||
<p>你需要搭建一个系统,查询景点的排名。初始时系统里没有任何景点。这个系统支持:</p>
|
||
|
||
<ul>
|
||
<li><strong>添加</strong> 景点,每次添加 <strong>一个</strong> 景点。</li>
|
||
<li><strong>查询 </strong>已经添加景点中第 <code>i</code> <strong>好</strong> 的景点,其中 <code>i</code> 是系统目前位置查询的次数(包括当前这一次)。
|
||
<ul>
|
||
<li>比方说,如果系统正在进行第 <code>4</code> 次查询,那么需要返回所有已经添加景点中第 <code>4</code> 好的。</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>注意,测试数据保证 <strong>任意查询时刻</strong> ,查询次数都 <strong>不超过</strong> 系统中景点的数目。</p>
|
||
|
||
<p>请你实现 <code>SORTracker</code> 类:</p>
|
||
|
||
<ul>
|
||
<li><code>SORTracker()</code> 初始化系统。</li>
|
||
<li><code>void add(string name, int score)</code> 向系统中添加一个名为 <code>name</code> 评分为 <code>score</code> 的景点。</li>
|
||
<li><code>string get()</code> 查询第 <code>i</code> 好的景点,其中 <code>i</code> 是目前系统查询的次数(包括当前这次查询)。</li>
|
||
</ul>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>
|
||
["SORTracker", "add", "add", "get", "add", "get", "add", "get", "add", "get", "add", "get", "get"]
|
||
[[], ["bradford", 2], ["branford", 3], [], ["alps", 2], [], ["orland", 2], [], ["orlando", 3], [], ["alpine", 2], [], []]
|
||
<strong>输出:</strong>
|
||
[null, null, null, "branford", null, "alps", null, "bradford", null, "bradford", null, "bradford", "orland"]
|
||
|
||
<strong>解释:</strong>
|
||
SORTracker tracker = new SORTracker(); // 初始化系统
|
||
tracker.add("bradford", 2); // 添加 name="bradford" 且 score=2 的景点。
|
||
tracker.add("branford", 3); // 添加 name="branford" 且 score=3 的景点。
|
||
tracker.get(); // 从好带坏的景点为:branford ,bradford 。
|
||
// 注意到 branford 比 bradford 好,因为它的 <strong>评分更高</strong> (3 > 2) 。
|
||
// 这是第 1 次调用 get() ,所以返回最好的景点:"branford" 。
|
||
tracker.add("alps", 2); // 添加 name="alps" 且 score=2 的景点。
|
||
tracker.get(); // 从好到坏的景点为:branford, alps, bradford 。
|
||
// 注意 alps 比 bradford 好,虽然它们评分相同,都为 2 。
|
||
// 这是因为 "alps" <strong>字典序</strong> 比 "bradford" 小。
|
||
// 返回第 2 好的地点 "alps" ,因为当前为第 2 次调用 get() 。
|
||
tracker.add("orland", 2); // 添加 name="orland" 且 score=2 的景点。
|
||
tracker.get(); // 从好到坏的景点为:branford, alps, bradford, orland 。
|
||
// 返回 "bradford" ,因为当前为第 3 次调用 get() 。
|
||
tracker.add("orlando", 3); // 添加 name="orlando" 且 score=3 的景点。
|
||
tracker.get(); // 从好到坏的景点为:branford, orlando, alps, bradford, orland 。
|
||
// 返回 "bradford".
|
||
tracker.add("alpine", 2); // 添加 name="alpine" 且 score=2 的景点。
|
||
tracker.get(); // 从好到坏的景点为:branford, orlando, alpine, alps, bradford, orland 。
|
||
// 返回 "bradford" 。
|
||
tracker.get(); // 从好到坏的景点为:branford, orlando, alpine, alps, bradford, orland 。
|
||
// 返回 "orland" 。
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>name</code> 只包含小写英文字母,且每个景点名字互不相同。</li>
|
||
<li><code>1 <= name.length <= 10</code></li>
|
||
<li><code>1 <= score <= 10<sup>5</sup></code></li>
|
||
<li>任意时刻,调用 <code>get</code> 的次数都不超过调用 <code>add</code> 的次数。</li>
|
||
<li><strong>总共</strong> 调用 <code>add</code> 和 <code>get</code> 不超过 <code>4 * 10<sup>4</sup></code> </li>
|
||
</ul>
|