From a0dfb4536e26e385c27202dbed82ae1491a18773 Mon Sep 17 00:00:00 2001 From: thinkasany <480968828@qq.com> Date: Sun, 27 Aug 2023 20:19:31 +0800 Subject: [PATCH] feat: update lc problem: No.2715 --- .../2715.Timeout Cancellation/README.md | 26 ++++++------------- .../2715.Timeout Cancellation/README_EN.md | 24 +++++------------ .../2715.Timeout Cancellation/Solution.js | 12 +++------ .../2715.Timeout Cancellation/Solution.ts | 12 +++------ solution/README.md | 2 +- solution/summary.md | 2 +- 6 files changed, 24 insertions(+), 54 deletions(-) diff --git a/solution/2700-2799/2715.Timeout Cancellation/README.md b/solution/2700-2799/2715.Timeout Cancellation/README.md index aff5e2f7da201..1874522f779eb 100644 --- a/solution/2700-2799/2715.Timeout Cancellation/README.md +++ b/solution/2700-2799/2715.Timeout Cancellation/README.md @@ -1,4 +1,4 @@ -# [2715. Timeout Cancellation](https://leetcode.cn/problems/timeout-cancellation) +# [2715. 执行可取消的延迟函数](https://leetcode.cn/problems/execute-cancellable-function-with-delay) [English Version](/solution/2700-2799/2715.Timeout%20Cancellation/README_EN.md) @@ -69,16 +69,10 @@ setTimeout(cancel, 100); ```ts function cancellable(fn: Function, args: any[], t: number): Function { - let cancelled = false; - const cancel = () => { - cancelled = true; + const timer = setTimeout(() => fn(...args), t); + return () => { + clearTimeout(timer); }; - setTimeout(() => { - if (!cancelled) { - fn(...args); - } - }, t); - return cancel; } /** @@ -118,14 +112,10 @@ function cancellable(fn: Function, args: any[], t: number): Function { * @return {Function} */ var cancellable = function (fn, args, t) { - let cancelled = false; - const calcel = () => (cancelled = true); - setTimeout(() => { - if (!cancelled) { - fn(...args); - } - }, t); - return calcel; + const timer = setTimeout(() => fn(...args), t); + return () => { + clearTimeout(timer); + }; }; /** diff --git a/solution/2700-2799/2715.Timeout Cancellation/README_EN.md b/solution/2700-2799/2715.Timeout Cancellation/README_EN.md index e25fd0646e731..42cfb12f09f4e 100644 --- a/solution/2700-2799/2715.Timeout Cancellation/README_EN.md +++ b/solution/2700-2799/2715.Timeout Cancellation/README_EN.md @@ -64,16 +64,10 @@ The cancellation was scheduled to occur after a delay of cancelT (100ms), which ```ts function cancellable(fn: Function, args: any[], t: number): Function { - let cancelled = false; - const cancel = () => { - cancelled = true; + const timer = setTimeout(() => fn(...args), t); + return () => { + clearTimeout(timer); }; - setTimeout(() => { - if (!cancelled) { - fn(...args); - } - }, t); - return cancel; } /** @@ -113,14 +107,10 @@ function cancellable(fn: Function, args: any[], t: number): Function { * @return {Function} */ var cancellable = function (fn, args, t) { - let cancelled = false; - const calcel = () => (cancelled = true); - setTimeout(() => { - if (!cancelled) { - fn(...args); - } - }, t); - return calcel; + const timer = setTimeout(() => fn(...args), t); + return () => { + clearTimeout(timer); + }; }; /** diff --git a/solution/2700-2799/2715.Timeout Cancellation/Solution.js b/solution/2700-2799/2715.Timeout Cancellation/Solution.js index 41577e0d3b278..2798cbddadc06 100644 --- a/solution/2700-2799/2715.Timeout Cancellation/Solution.js +++ b/solution/2700-2799/2715.Timeout Cancellation/Solution.js @@ -5,14 +5,10 @@ * @return {Function} */ var cancellable = function (fn, args, t) { - let cancelled = false; - const calcel = () => (cancelled = true); - setTimeout(() => { - if (!cancelled) { - fn(...args); - } - }, t); - return calcel; + const timer = setTimeout(() => fn(...args), t); + return () => { + clearTimeout(timer); + }; }; /** diff --git a/solution/2700-2799/2715.Timeout Cancellation/Solution.ts b/solution/2700-2799/2715.Timeout Cancellation/Solution.ts index 30e0e9b4b4665..4c2c28a8a347c 100644 --- a/solution/2700-2799/2715.Timeout Cancellation/Solution.ts +++ b/solution/2700-2799/2715.Timeout Cancellation/Solution.ts @@ -1,14 +1,8 @@ function cancellable(fn: Function, args: any[], t: number): Function { - let cancelled = false; - const cancel = () => { - cancelled = true; + const timer = setTimeout(() => fn(...args), t); + return () => { + clearTimeout(timer); }; - setTimeout(() => { - if (!cancelled) { - fn(...args); - } - }, t); - return cancel; } /** diff --git a/solution/README.md b/solution/README.md index 0499d4f95e99a..c68a3c87120db 100644 --- a/solution/README.md +++ b/solution/README.md @@ -2725,7 +2725,7 @@ | 2712 | [使所有字符相等的最小成本](/solution/2700-2799/2712.Minimum%20Cost%20to%20Make%20All%20Characters%20Equal/README.md) | `贪心`,`字符串`,`动态规划` | 中等 | 第 347 场周赛 | | 2713 | [矩阵中严格递增的单元格数](/solution/2700-2799/2713.Maximum%20Strictly%20Increasing%20Cells%20in%20a%20Matrix/README.md) | `记忆化搜索`,`数组`,`二分查找`,`动态规划`,`矩阵`,`排序` | 困难 | 第 347 场周赛 | | 2714 | [找到最短路径的 K 次跨越](/solution/2700-2799/2714.Find%20Shortest%20Path%20with%20K%20Hops/README.md) | `图`,`最短路`,`堆(优先队列)` | 困难 | 🔒 | -| 2715 | [Timeout Cancellation](/solution/2700-2799/2715.Timeout%20Cancellation/README.md) | | 简单 | | +| 2715 | [执行可取消的延迟函数](/solution/2700-2799/2715.Timeout%20Cancellation/README.md) | | 简单 | | | 2716 | [最小化字符串长度](/solution/2700-2799/2716.Minimize%20String%20Length/README.md) | `哈希表`,`字符串` | 简单 | 第 348 场周赛 | | 2717 | [半有序排列](/solution/2700-2799/2717.Semi-Ordered%20Permutation/README.md) | `数组`,`模拟` | 简单 | 第 348 场周赛 | | 2718 | [查询后矩阵的和](/solution/2700-2799/2718.Sum%20of%20Matrix%20After%20Queries/README.md) | `数组`,`哈希表` | 中等 | 第 348 场周赛 | diff --git a/solution/summary.md b/solution/summary.md index 6b7105ab52708..906eb8dcf4d4b 100644 --- a/solution/summary.md +++ b/solution/summary.md @@ -2768,7 +2768,7 @@ - [2712.使所有字符相等的最小成本](/solution/2700-2799/2712.Minimum%20Cost%20to%20Make%20All%20Characters%20Equal/README.md) - [2713.矩阵中严格递增的单元格数](/solution/2700-2799/2713.Maximum%20Strictly%20Increasing%20Cells%20in%20a%20Matrix/README.md) - [2714.找到最短路径的 K 次跨越](/solution/2700-2799/2714.Find%20Shortest%20Path%20with%20K%20Hops/README.md) - - [2715.Timeout Cancellation](/solution/2700-2799/2715.Timeout%20Cancellation/README.md) + - [2715.执行可取消的延迟函数](/solution/2700-2799/2715.Timeout%20Cancellation/README.md) - [2716.最小化字符串长度](/solution/2700-2799/2716.Minimize%20String%20Length/README.md) - [2717.半有序排列](/solution/2700-2799/2717.Semi-Ordered%20Permutation/README.md) - [2718.查询后矩阵的和](/solution/2700-2799/2718.Sum%20of%20Matrix%20After%20Queries/README.md)