Skip to content

Commit 54a0aff

Browse files
authored
feat: add solutions to lc problems: No.2715,2727 (doocs#1465)
* No.2715.Timeout Cancellation * No.2727.Is Object Empty
1 parent 285f8e1 commit 54a0aff

File tree

7 files changed

+288
-0
lines changed

7 files changed

+288
-0
lines changed

solution/2700-2799/2715.Timeout Cancellation/README.md

+84
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,91 @@ The cancellation was scheduled to occur after a delay of cancelT (100ms), which
6969
<!-- 这里可写当前语言的特殊实现逻辑 -->
7070

7171
```ts
72+
function cancellable(fn: Function, args: any[], t: number): Function {
73+
let cancelled = false;
74+
const cancel = () => {
75+
cancelled = true;
76+
};
77+
setTimeout(() => {
78+
if (!cancelled) {
79+
fn(...args);
80+
}
81+
}, t);
82+
return cancel;
83+
}
84+
85+
/**
86+
* const result = []
87+
*
88+
* const fn = (x) => x * 5
89+
* const args = [2], t = 20, cancelT = 50
90+
*
91+
* const start = performance.now()
92+
*
93+
* const log = (...argsArr) => {
94+
* const diff = Math.floor(performance.now() - start);
95+
* result.push({"time": diff, "returned": fn(...argsArr))
96+
* }
97+
*
98+
* const cancel = cancellable(log, args, t);
99+
*
100+
* const maxT = Math.max(t, cancelT)
101+
*
102+
* setTimeout(() => {
103+
* cancel()
104+
* }, cancelT)
105+
*
106+
* setTimeout(() => {
107+
* console.log(result) // [{"time":20,"returned":10}]
108+
* }, maxT + 15)
109+
*/
110+
```
72111

112+
### **JavaScript**
113+
114+
```js
115+
/**
116+
* @param {Function} fn
117+
* @param {Array} args
118+
* @param {number} t
119+
* @return {Function}
120+
*/
121+
var cancellable = function (fn, args, t) {
122+
let cancelled = false;
123+
const calcel = () => (cancelled = true);
124+
setTimeout(() => {
125+
if (!cancelled) {
126+
fn(...args);
127+
}
128+
}, t);
129+
return calcel;
130+
};
131+
132+
/**
133+
* const result = []
134+
*
135+
* const fn = (x) => x * 5
136+
* const args = [2], t = 20, cancelT = 50
137+
*
138+
* const start = performance.now()
139+
*
140+
* const log = (...argsArr) => {
141+
* const diff = Math.floor(performance.now() - start);
142+
* result.push({"time": diff, "returned": fn(...argsArr))
143+
* }
144+
*
145+
* const cancel = cancellable(log, args, t);
146+
*
147+
* const maxT = Math.max(t, cancelT)
148+
*
149+
* setTimeout(() => {
150+
* cancel()
151+
* }, cancelT)
152+
*
153+
* setTimeout(() => {
154+
* console.log(result) // [{"time":20,"returned":10}]
155+
* }, maxT + 15)
156+
*/
73157
```
74158

75159
<!-- tabs:end -->

solution/2700-2799/2715.Timeout Cancellation/README_EN.md

+84
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,91 @@ The cancellation was scheduled to occur after a delay of cancelT (100ms), which
6363
### **TypeScript**
6464

6565
```ts
66+
function cancellable(fn: Function, args: any[], t: number): Function {
67+
let cancelled = false;
68+
const cancel = () => {
69+
cancelled = true;
70+
};
71+
setTimeout(() => {
72+
if (!cancelled) {
73+
fn(...args);
74+
}
75+
}, t);
76+
return cancel;
77+
}
78+
79+
/**
80+
* const result = []
81+
*
82+
* const fn = (x) => x * 5
83+
* const args = [2], t = 20, cancelT = 50
84+
*
85+
* const start = performance.now()
86+
*
87+
* const log = (...argsArr) => {
88+
* const diff = Math.floor(performance.now() - start);
89+
* result.push({"time": diff, "returned": fn(...argsArr))
90+
* }
91+
*
92+
* const cancel = cancellable(log, args, t);
93+
*
94+
* const maxT = Math.max(t, cancelT)
95+
*
96+
* setTimeout(() => {
97+
* cancel()
98+
* }, cancelT)
99+
*
100+
* setTimeout(() => {
101+
* console.log(result) // [{"time":20,"returned":10}]
102+
* }, maxT + 15)
103+
*/
104+
```
66105

106+
### **JavaScript**
107+
108+
```js
109+
/**
110+
* @param {Function} fn
111+
* @param {Array} args
112+
* @param {number} t
113+
* @return {Function}
114+
*/
115+
var cancellable = function (fn, args, t) {
116+
let cancelled = false;
117+
const calcel = () => (cancelled = true);
118+
setTimeout(() => {
119+
if (!cancelled) {
120+
fn(...args);
121+
}
122+
}, t);
123+
return calcel;
124+
};
125+
126+
/**
127+
* const result = []
128+
*
129+
* const fn = (x) => x * 5
130+
* const args = [2], t = 20, cancelT = 50
131+
*
132+
* const start = performance.now()
133+
*
134+
* const log = (...argsArr) => {
135+
* const diff = Math.floor(performance.now() - start);
136+
* result.push({"time": diff, "returned": fn(...argsArr))
137+
* }
138+
*
139+
* const cancel = cancellable(log, args, t);
140+
*
141+
* const maxT = Math.max(t, cancelT)
142+
*
143+
* setTimeout(() => {
144+
* cancel()
145+
* }, cancelT)
146+
*
147+
* setTimeout(() => {
148+
* console.log(result) // [{"time":20,"returned":10}]
149+
* }, maxT + 15)
150+
*/
67151
```
68152

69153
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* @param {Function} fn
3+
* @param {Array} args
4+
* @param {number} t
5+
* @return {Function}
6+
*/
7+
var cancellable = function (fn, args, t) {
8+
let cancelled = false;
9+
const calcel = () => (cancelled = true);
10+
setTimeout(() => {
11+
if (!cancelled) {
12+
fn(...args);
13+
}
14+
}, t);
15+
return calcel;
16+
};
17+
18+
/**
19+
* const result = []
20+
*
21+
* const fn = (x) => x * 5
22+
* const args = [2], t = 20, cancelT = 50
23+
*
24+
* const start = performance.now()
25+
*
26+
* const log = (...argsArr) => {
27+
* const diff = Math.floor(performance.now() - start);
28+
* result.push({"time": diff, "returned": fn(...argsArr))
29+
* }
30+
*
31+
* const cancel = cancellable(log, args, t);
32+
*
33+
* const maxT = Math.max(t, cancelT)
34+
*
35+
* setTimeout(() => {
36+
* cancel()
37+
* }, cancelT)
38+
*
39+
* setTimeout(() => {
40+
* console.log(result) // [{"time":20,"returned":10}]
41+
* }, maxT + 15)
42+
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function cancellable(fn: Function, args: any[], t: number): Function {
2+
let cancelled = false;
3+
const cancel = () => {
4+
cancelled = true;
5+
};
6+
setTimeout(() => {
7+
if (!cancelled) {
8+
fn(...args);
9+
}
10+
}, t);
11+
return cancel;
12+
}
13+
14+
/**
15+
* const result = []
16+
*
17+
* const fn = (x) => x * 5
18+
* const args = [2], t = 20, cancelT = 50
19+
*
20+
* const start = performance.now()
21+
*
22+
* const log = (...argsArr) => {
23+
* const diff = Math.floor(performance.now() - start);
24+
* result.push({"time": diff, "returned": fn(...argsArr))
25+
* }
26+
*
27+
* const cancel = cancellable(log, args, t);
28+
*
29+
* const maxT = Math.max(t, cancelT)
30+
*
31+
* setTimeout(() => {
32+
* cancel()
33+
* }, cancelT)
34+
*
35+
* setTimeout(() => {
36+
* console.log(result) // [{"time":20,"returned":10}]
37+
* }, maxT + 15)
38+
*/

solution/2700-2799/2727.Is Object Empty/README.md

+15
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,19 @@ function isEmpty(obj: Record<string, any> | any[]): boolean {
7777
}
7878
```
7979

80+
### **JavaScript**
81+
82+
```js
83+
/**
84+
* @param {Object | Array} obj
85+
* @return {boolean}
86+
*/
87+
var isEmpty = function (obj) {
88+
for (const x in obj) {
89+
return false;
90+
}
91+
return true;
92+
};
93+
```
94+
8095
<!-- tabs:end -->

solution/2700-2799/2727.Is Object Empty/README_EN.md

+15
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,19 @@ function isEmpty(obj: Record<string, any> | any[]): boolean {
6363
}
6464
```
6565

66+
### **JavaScript**
67+
68+
```js
69+
/**
70+
* @param {Object | Array} obj
71+
* @return {boolean}
72+
*/
73+
var isEmpty = function (obj) {
74+
for (const x in obj) {
75+
return false;
76+
}
77+
return true;
78+
};
79+
```
80+
6681
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* @param {Object | Array} obj
3+
* @return {boolean}
4+
*/
5+
var isEmpty = function (obj) {
6+
for (const x in obj) {
7+
return false;
8+
}
9+
return true;
10+
};

0 commit comments

Comments
 (0)