1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-04 06:51:41 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee

存量题库数据更新

This commit is contained in:
2023-12-09 18:42:21 +08:00
parent a788808cd7
commit c198538f10
10843 changed files with 288489 additions and 248355 deletions

View File

@@ -1,58 +1,80 @@
Given a function <code>fn,</code> an array of arguments&nbsp;<code>args</code>, and&nbsp;an interval time <code>t</code>, return a cancel function <code>cancelFn</code>. The function <code>fn</code> should be called with <code>args</code> immediately and then called again every&nbsp;<code>t</code> milliseconds&nbsp;until <code>cancelFn</code> is called.
<p>Given a function <code>fn</code>, an array of arguments&nbsp;<code>args</code>, and&nbsp;an interval time <code>t</code>, return a cancel function <code>cancelFn</code>.</p>
<p>The function <code>fn</code> should be called with <code>args</code> immediately and then called again every&nbsp;<code>t</code> milliseconds&nbsp;until&nbsp;<code>cancelFn</code>&nbsp;is called at <code>cancelTimeMs</code> ms.</p>
<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre>
<strong>Input:</strong> fn = (x) =&gt; x * 2, args = [4], t = 20, cancelT = 110
<strong>Input:</strong> fn = (x) =&gt; x * 2, args = [4], t = 35
<strong>Output:</strong>
[
{&quot;time&quot;: 0, &quot;returned&quot;: 8},
{&quot;time&quot;: 20, &quot;returned&quot;: 8},
{&quot;time&quot;: 40, &quot;returned&quot;: 8},
{&quot;time&quot;: 60, &quot;returned&quot;: 8},
{&quot;time&quot;: 80, &quot;returned&quot;: 8},
{&quot;time&quot;: 100, &quot;returned&quot;: 8}
{&quot;time&quot;: 35, &quot;returned&quot;: 8},
{&quot;time&quot;: 70, &quot;returned&quot;: 8},
{&quot;time&quot;: 105, &quot;returned&quot;: 8},
{&quot;time&quot;: 140, &quot;returned&quot;: 8},
{&quot;time&quot;: 175, &quot;returned&quot;: 8}
]
<strong>Explanation:</strong> Every 20ms, fn(4) is called. Until t=110ms, then it is cancelled.
<strong>Explanation:</strong>
const result = [];
const fn = (x) =&gt; x * 2;
const cancelTimeMs = 190;
const cancel = cancellable(x =&gt; x * 2, [4], 20);
setTimeout(cancel, 110);
const start = performance.now();
const log = (...argsArr) =&gt; {
const diff = Math.floor(performance.now() - start);
result.push({&quot;time&quot;: diff, &quot;returned&quot;: fn(...argsArr)});
}
const cancel = cancellable(log, [4], 35);
setTimeout(cancel, cancelTimeMs);
setTimeout(() =&gt; {
console.log(result); // Output
}, cancelTimeMs + 50)
Every 35ms, fn(4) is called. Until t=190ms, then it is cancelled.
1st fn call is at 0ms. fn(4) returns 8.
2nd fn call is at 20ms. fn(4) returns 8.
3rd fn call is at 40ms. fn(4) returns 8.
4th fn call is at&nbsp;60ms. fn(4) returns 8.
5th fn call is at 80ms. fn(4) returns 8.
6th fn call is at 100ms. fn(4) returns 8.
2nd fn call is at 35ms. fn(4) returns 8.
3rd fn call is at 70ms. fn(4) returns 8.
4th fn call is at&nbsp;105ms. fn(4) returns 8.
5th fn call is at 140ms. fn(4) returns 8.
6th fn call is at 175ms. fn(4) returns 8.
Cancelled at 190ms
</pre>
<p><strong class="example">Example 2:</strong></p>
<pre>
<strong>Input:</strong> fn = (x1, x2) =&gt; (x1 * x2), args = [2, 5], t = 25, cancelT = 140
<strong>Input:</strong> fn = (x1, x2) =&gt; (x1 * x2), args = [2, 5], t = 30
<strong>Output:</strong>
[
{&quot;time&quot;: 0, &quot;returned&quot;: 10},
{&quot;time&quot;: 25, &quot;returned&quot;: 10},
{&quot;time&quot;: 50, &quot;returned&quot;: 10},
{&quot;time&quot;: 75, &quot;returned&quot;: 10},
{&quot;time&quot;: 100, &quot;returned&quot;: 10},
{&quot;time&quot;: 125, &quot;returned&quot;: 10}
{&quot;time&quot;: 30, &quot;returned&quot;: 10},
{&quot;time&quot;: 60, &quot;returned&quot;: 10},
{&quot;time&quot;: 90, &quot;returned&quot;: 10},
{&quot;time&quot;: 120, &quot;returned&quot;: 10},
{&quot;time&quot;: 150, &quot;returned&quot;: 10}
]
<strong>Explanation:</strong> Every 25ms, fn(2, 5) is called. Until t=140ms, then it is cancelled.
<strong>Explanation:</strong>
const cancelTimeMs = 165;
Every 30ms, fn(2, 5) is called. Until t=165ms, then it is cancelled.
1st fn call is at 0ms&nbsp;
2nd fn call is at 25ms&nbsp;
3rd fn call is at 50ms&nbsp;
4th fn call is at&nbsp;75ms&nbsp;
5th fn call is at 100ms&nbsp;
6th fn call is at 125ms
Cancelled at 140ms
2nd fn call is at 30ms&nbsp;
3rd fn call is at 60ms&nbsp;
4th fn call is at&nbsp;90ms&nbsp;
5th fn call is at 120ms&nbsp;
6th fn call is at 150ms
Cancelled at 165ms
</pre>
<p><strong class="example">Example 3:</strong></p>
<pre>
<strong>Input:</strong> fn = (x1, x2, x3) =&gt; (x1 + x2 + x3), args = [5, 1, 3], t = 50, cancelT = 180
<strong>Input:</strong> fn = (x1, x2, x3) =&gt; (x1 + x2 + x3), args = [5, 1, 3], t = 50
<strong>Output:</strong>
[
{&quot;time&quot;: 0, &quot;returned&quot;: 9},
@@ -60,7 +82,10 @@ Cancelled at 140ms
{&quot;time&quot;: 100, &quot;returned&quot;: 9},
{&quot;time&quot;: 150, &quot;returned&quot;: 9}
]
<strong>Explanation:</strong> Every 50ms, fn(5, 1, 3) is called. Until t=180ms, then it is cancelled.
<strong>Explanation:</strong>
const cancelTimeMs = 180;
Every 50ms, fn(5, 1, 3) is called. Until t=180ms, then it is cancelled.
1st fn call is at 0ms
2nd fn call is at 50ms
3rd fn call is at 100ms
@@ -72,9 +97,9 @@ Cancelled at 180ms
<p><strong>Constraints:</strong></p>
<ul>
<li><code>fn is a function</code></li>
<li><code>args is a valid JSON array</code></li>
<li><code>fn</code> is a function</li>
<li><code>args</code> is a valid JSON array</li>
<li><code>1 &lt;= args.length &lt;= 10</code></li>
<li><code><font face="monospace">20 &lt;= t &lt;= 1000</font></code></li>
<li><code><font face="monospace">10 &lt;= cancelT &lt;= 1000</font></code></li>
<li><code><font face="monospace">30 &lt;= t &lt;= 100</font></code></li>
<li><code><font face="monospace">10 &lt;= </font>cancelTimeMs<font face="monospace"> &lt;= 500</font></code></li>
</ul>