1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/有时间限制的缓存 [cache-with-time-limit].html

63 lines
3.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>编写一个类,它允许获取和设置键-值对,并且每个键都有一个&nbsp;<strong>过期时间</strong>&nbsp;</p>
<p>该类有三个公共方法:</p>
<p><code>set(key, value, duration)</code>&nbsp;:接收参数为整型键 <code>key</code> 、整型值 <code>value</code> 和以毫秒为单位的持续时间 <code>duration</code> 。一旦 <code>duration</code>&nbsp;到期后,这个键就无法访问。如果相同的未过期键已经存在,该方法将返回&nbsp;<code>true</code>&nbsp;,否则返回&nbsp;<code>false</code>&nbsp;。如果该键已经存在,则它的值和持续时间都应该被覆盖。</p>
<p><code>get(key)</code>&nbsp;:如果存在一个未过期的键,它应该返回这个键相关的值。否则返回&nbsp;<code>-1</code>&nbsp;</p>
<p><code>count()</code>&nbsp;:返回未过期键的总数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>
actions = ["TimeLimitedCache", "set", "get", "count", "get"]
values = [[], [1, 42, 100], [1], [], [1]]
timeDeays = [0, 0, 50, 50, 150]
<strong>输出:</strong> [null, false, 42, 1, -1]
<strong>解释:</strong>
在 t=0 时,缓存被构造。
在 t=0 时,添加一个键值对 (1: 42) ,过期时间为 100ms 。因为该值不存在因此返回false。
在 t=50 时,请求 key=1 并返回值 42。
在 t=50 时,调用 count() ,缓存中有一个未过期的键。
在 t=100 时key=1 到期。
在 t=150 时,调用 get(1) ,返回 -1因为缓存是空的。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>
actions = ["TimeLimitedCache", "set", "set", "get", "get", "get", "count"]
values = [[], [1, 42, 50], [1, 50, 100], [1], [1], [1], []]
timeDelays = [0, 0, 40, 50, 120, 200, 250]
<strong>输出:</strong> [null, false, true, 50, 50, -1]
<strong>解释:</strong>
在 t=0 时,缓存被构造。
在 t=0 时,添加一个键值对 (1: 42) ,过期时间为 50ms。因为该值不存在因此返回false。
当 t=40 时,添加一个键值对 (1: 50) ,过期时间为 100ms。因为一个未过期的键已经存在返回 true 并覆盖这个键的旧值。
在 t=50 时,调用 get(1) ,返回 50。
在 t=120 时,调用 get(1) ,返回 50。
在 t=140 时key=1 过期。
在 t=200 时,调用 get(1) ,但缓存为空,因此返回 -1。
在 t=250 时count() 返回0 ,因为缓存是空的,没有未过期的键。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt;= key, value &lt;= 10<sup>9</sup></code></li>
<li><code>0 &lt;= duration &lt;= 1000</code></li>
<li><code>1 &lt;= actions.length &lt;= 100</code></li>
<li><code>actions.length === values.length</code></li>
<li><code>actions.length === timeDelays.length</code></li>
<li><code>0 &lt;= timeDelays[i] &lt;= 1450</code></li>
<li><code>actions[i]</code> 是 "TimeLimitedCache"、"set"、"get" 和 "count" 中的一个。</li>
<li>第一个操作始终是 "TimeLimitedCache" 而且一定会以 0 毫秒的延迟立即执行</li>
</ul>