Skip to content

Commit 71391b6

Browse files
committed
fix: update
1 parent 47effbe commit 71391b6

File tree

2 files changed

+22
-44
lines changed

2 files changed

+22
-44
lines changed
Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
function numberOfWays(corridor: string): number {
2-
const M: number = 1e9 + 7;
3-
const seatNumbers: number[] = [];
4-
5-
for (let i = 0; i < corridor.length; i++) {
6-
if (corridor.charAt(i) === 'S') {
7-
seatNumbers.push(i);
2+
const n = corridor.length;
3+
const mod = 10 ** 9 + 7;
4+
const f: number[][] = Array.from({ length: n }, () => Array(3).fill(-1));
5+
const dfs = (i: number, k: number): number => {
6+
if (i >= n) {
7+
return k === 2 ? 1 : 0;
88
}
9-
}
10-
11-
if (seatNumbers.length % 2 !== 0 || seatNumbers.length === 0) {
12-
return 0;
13-
}
14-
15-
let result: number = 1;
16-
17-
for (let i = 2; i < seatNumbers.length; i += 2) {
18-
result = (result * (seatNumbers[i] - seatNumbers[i - 1])) % M;
19-
}
20-
21-
return result;
9+
if (f[i][k] !== -1) {
10+
return f[i][k];
11+
}
12+
if (corridor[i] === 'S') {
13+
++k;
14+
}
15+
if (k > 2) {
16+
return (f[i][k] = 0);
17+
}
18+
f[i][k] = dfs(i + 1, k);
19+
if (k === 2) {
20+
f[i][k] = (f[i][k] + dfs(i + 1, 0)) % mod;
21+
}
22+
return f[i][k];
23+
};
24+
return dfs(0, 0);
2225
}

solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/solution.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)