Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 149af36

Browse files
feat: update lc problems (doocs#3435)
1 parent 6afff8c commit 149af36

File tree

14 files changed

+126
-159
lines changed

14 files changed

+126
-159
lines changed

‎solution/0500-0599/0552.Student Attendance Record II/README.md‎

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -152,36 +152,30 @@ class Solution {
152152
#### C++
153153

154154
```cpp
155-
int f[100010][2][3];
156-
const int mod = 1e9 + 7;
157-
158155
class Solution {
159156
public:
160157
int checkRecord(int n) {
161-
this->n = n;
158+
int f[n][2][3];
162159
memset(f, -1, sizeof(f));
163-
return dfs(0, 0, 0);
164-
}
165-
166-
int dfs(int i, int j, int k) {
167-
if (i >= n) {
168-
return 1;
169-
}
170-
if (f[i][j][k] != -1) {
171-
return f[i][j][k];
172-
}
173-
int ans = dfs(i + 1, j, 0);
174-
if (j == 0) {
175-
ans = (ans + dfs(i + 1, j + 1, 0)) % mod;
176-
}
177-
if (k < 2) {
178-
ans = (ans + dfs(i + 1, j, k + 1)) % mod;
179-
}
180-
return f[i][j][k] = ans;
160+
const int mod = 1e9 + 7;
161+
auto dfs = [&](auto&& dfs, int i, int j, int k) -> int {
162+
if (i >= n) {
163+
return 1;
164+
}
165+
if (f[i][j][k] != -1) {
166+
return f[i][j][k];
167+
}
168+
int ans = dfs(dfs, i + 1, j, 0);
169+
if (j == 0) {
170+
ans = (ans + dfs(dfs, i + 1, j + 1, 0)) % mod;
171+
}
172+
if (k < 2) {
173+
ans = (ans + dfs(dfs, i + 1, j, k + 1)) % mod;
174+
}
175+
return f[i][j][k] = ans;
176+
};
177+
return dfs(dfs, 0, 0, 0);
181178
}
182-
183-
private:
184-
int n;
185179
};
186180
```
187181

‎solution/0500-0599/0552.Student Attendance Record II/README_EN.md‎

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -134,36 +134,30 @@ class Solution {
134134
#### C++
135135

136136
```cpp
137-
int f[100010][2][3];
138-
const int mod = 1e9 + 7;
139-
140137
class Solution {
141138
public:
142139
int checkRecord(int n) {
143-
this->n = n;
140+
int f[n][2][3];
144141
memset(f, -1, sizeof(f));
145-
return dfs(0, 0, 0);
146-
}
147-
148-
int dfs(int i, int j, int k) {
149-
if (i >= n) {
150-
return 1;
151-
}
152-
if (f[i][j][k] != -1) {
153-
return f[i][j][k];
154-
}
155-
int ans = dfs(i + 1, j, 0);
156-
if (j == 0) {
157-
ans = (ans + dfs(i + 1, j + 1, 0)) % mod;
158-
}
159-
if (k < 2) {
160-
ans = (ans + dfs(i + 1, j, k + 1)) % mod;
161-
}
162-
return f[i][j][k] = ans;
142+
const int mod = 1e9 + 7;
143+
auto dfs = [&](auto&& dfs, int i, int j, int k) -> int {
144+
if (i >= n) {
145+
return 1;
146+
}
147+
if (f[i][j][k] != -1) {
148+
return f[i][j][k];
149+
}
150+
int ans = dfs(dfs, i + 1, j, 0);
151+
if (j == 0) {
152+
ans = (ans + dfs(dfs, i + 1, j + 1, 0)) % mod;
153+
}
154+
if (k < 2) {
155+
ans = (ans + dfs(dfs, i + 1, j, k + 1)) % mod;
156+
}
157+
return f[i][j][k] = ans;
158+
};
159+
return dfs(dfs, 0, 0, 0);
163160
}
164-
165-
private:
166-
int n;
167161
};
168162
```
169163
Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,25 @@
1-
int f[100010][2][3];
2-
const int mod = 1e9 + 7;
3-
41
class Solution {
52
public:
63
int checkRecord(int n) {
7-
this->n = n;
4+
int f[n][2][3];
85
memset(f, -1, sizeof(f));
9-
return dfs(0, 0, 0);
6+
const int mod = 1e9 + 7;
7+
auto dfs = [&](auto&& dfs, int i, int j, int k) -> int {
8+
if (i >= n) {
9+
return 1;
10+
}
11+
if (f[i][j][k] != -1) {
12+
return f[i][j][k];
13+
}
14+
int ans = dfs(dfs, i + 1, j, 0);
15+
if (j == 0) {
16+
ans = (ans + dfs(dfs, i + 1, j + 1, 0)) % mod;
17+
}
18+
if (k < 2) {
19+
ans = (ans + dfs(dfs, i + 1, j, k + 1)) % mod;
20+
}
21+
return f[i][j][k] = ans;
22+
};
23+
return dfs(dfs, 0, 0, 0);
1024
}
11-
12-
int dfs(int i, int j, int k) {
13-
if (i >= n) {
14-
return 1;
15-
}
16-
if (f[i][j][k] != -1) {
17-
return f[i][j][k];
18-
}
19-
int ans = dfs(i + 1, j, 0);
20-
if (j == 0) {
21-
ans = (ans + dfs(i + 1, j + 1, 0)) % mod;
22-
}
23-
if (k < 2) {
24-
ans = (ans + dfs(i + 1, j, k + 1)) % mod;
25-
}
26-
return f[i][j][k] = ans;
27-
}
28-
29-
private:
30-
int n;
31-
};
25+
};

‎solution/0700-0799/0756.Pyramid Transition Matrix/README.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ tags:
4040
<strong>输入:</strong>bottom = "BCD", allowed = ["BCC","CDE","CEA","FFF"]
4141
<strong>输出:</strong>true
4242
<strong>解释:</strong>允许的三角形模式显示在右边。
43-
从最底层(第3层)开始,我们可以在第2层构建"CE",然后在第1层构建"E"。
44-
金字塔中有三种三角形图案,分别是"BCC"、"CDE""CEA"。都是允许的。
43+
从最底层(第 3 层)开始,我们可以在第 2 层构建"CE",然后在第 1 层构建"E"。
44+
金字塔中有三种三角形图案,分别是"BCC"、"CDE""CEA"。都是允许的。
4545
</pre>
4646

4747
<p><strong>示例 2:</strong></p>
@@ -52,7 +52,7 @@ tags:
5252
<strong>输入:</strong>bottom = "AAAA", allowed = ["AAB","AAC","BCD","BBE","DEF"]
5353
<strong>输出:</strong>false
5454
<strong>解释:</strong>允许的三角形模式显示在右边。
55-
从最底层(游戏邦注:即第4个关卡)开始,创造第3个关卡有多种方法,但如果尝试所有可能性,你便会在创造第1个关卡前陷入困境
55+
从最底层(游戏邦注:即第 4 个关卡)开始,创造第 3 个关卡有多种方法,但如果尝试所有可能性,你便会在创造第 1 个关卡前陷入困境
5656
</pre>
5757

5858
<p>&nbsp;</p>
@@ -63,7 +63,7 @@ tags:
6363
<li><code>2 &lt;= bottom.length &lt;= 6</code></li>
6464
<li><code>0 &lt;= allowed.length &lt;= 216</code></li>
6565
<li><code>allowed[i].length == 3</code></li>
66-
<li>所有输入字符串中的字母来自集合&nbsp;<code>{'A', 'B', 'C', 'D', 'E', 'F', 'G'}</code>。</li>
66+
<li>所有输入字符串中的字母来自集合&nbsp;<code>{'A', 'B', 'C', 'D', 'E', 'F'}</code>。</li>
6767
<li>&nbsp;<code>allowed</code>&nbsp;中所有值都是 <strong>唯一的</strong></li>
6868
</ul>
6969

‎solution/2000-2099/2096.Step-By-Step Directions From a Binary Tree Node to Another/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ function getDirections(root: TreeNode | null, startValue: number, destValue: num
314314
const left = lca(node.left, p, q);
315315
const right = lca(node.right, p, q);
316316

317-
return left && right ? node : left ?? right;
317+
return left && right ? node : (left ?? right);
318318
};
319319

320320
const dfs = (node: TreeNode | null, x: number, path: string[]): boolean => {
@@ -370,7 +370,7 @@ var getDirections = function (root, startValue, destValue) {
370370
const left = lca(node.left, p, q);
371371
const right = lca(node.right, p, q);
372372

373-
return left && right ? node : left ?? right;
373+
return left && right ? node : (left ?? right);
374374
};
375375

376376
const dfs = (node, x, path) => {

‎solution/2000-2099/2096.Step-By-Step Directions From a Binary Tree Node to Another/README_EN.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ function getDirections(root: TreeNode | null, startValue: number, destValue: num
310310
const left = lca(node.left, p, q);
311311
const right = lca(node.right, p, q);
312312

313-
return left && right ? node : left ?? right;
313+
return left && right ? node : (left ?? right);
314314
};
315315

316316
const dfs = (node: TreeNode | null, x: number, path: string[]): boolean => {
@@ -366,7 +366,7 @@ var getDirections = function (root, startValue, destValue) {
366366
const left = lca(node.left, p, q);
367367
const right = lca(node.right, p, q);
368368

369-
return left && right ? node : left ?? right;
369+
return left && right ? node : (left ?? right);
370370
};
371371

372372
const dfs = (node, x, path) => {

‎solution/2000-2099/2096.Step-By-Step Directions From a Binary Tree Node to Another/Solution.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var getDirections = function (root, startValue, destValue) {
2020
const left = lca(node.left, p, q);
2121
const right = lca(node.right, p, q);
2222

23-
return left && right ? node : left ?? right;
23+
return left && right ? node : (left ?? right);
2424
};
2525

2626
const dfs = (node, x, path) => {

‎solution/2000-2099/2096.Step-By-Step Directions From a Binary Tree Node to Another/Solution.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function getDirections(root: TreeNode | null, startValue: number, destValue: num
2020
const left = lca(node.left, p, q);
2121
const right = lca(node.right, p, q);
2222

23-
return left && right ? node : left ?? right;
23+
return left && right ? node : (left ?? right);
2424
};
2525

2626
const dfs = (node: TreeNode | null, x: number, path: string[]): boolean => {

‎solution/3100-3199/3154.Find Number of Ways to Reach the K-th Stair/README.md‎

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -187,29 +187,24 @@ class Solution {
187187
class Solution {
188188
public:
189189
int waysToReachStair(int k) {
190-
this->k = k;
191-
return dfs(1, 0, 0);
192-
}
193-
194-
private:
195-
unordered_map<long long, int> f;
196-
int k;
197-
198-
int dfs(int i, int j, int jump) {
199-
if (i > k + 1) {
200-
return 0;
201-
}
202-
long long key = ((long long) i << 32) | jump << 1 | j;
203-
if (f.contains(key)) {
204-
return f[key];
205-
}
206-
int ans = i == k ? 1 : 0;
207-
if (i > 0 && j == 0) {
208-
ans += dfs(i - 1, 1, jump);
209-
}
210-
ans += dfs(i + (1 << jump), 0, jump + 1);
211-
f[key] = ans;
212-
return ans;
190+
unordered_map<long long, int> f;
191+
auto dfs = [&](auto&& dfs, int i, int j, int jump) -> int {
192+
if (i > k + 1) {
193+
return 0;
194+
}
195+
long long key = ((long long) i << 32) | jump << 1 | j;
196+
if (f.contains(key)) {
197+
return f[key];
198+
}
199+
int ans = i == k ? 1 : 0;
200+
if (i > 0 && j == 0) {
201+
ans += dfs(dfs, i - 1, 1, jump);
202+
}
203+
ans += dfs(dfs, i + (1 << jump), 0, jump + 1);
204+
f[key] = ans;
205+
return ans;
206+
};
207+
return dfs(dfs, 1, 0, 0);
213208
}
214209
};
215210
```

‎solution/3100-3199/3154.Find Number of Ways to Reach the K-th Stair/README_EN.md‎

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -185,29 +185,24 @@ class Solution {
185185
class Solution {
186186
public:
187187
int waysToReachStair(int k) {
188-
this->k = k;
189-
return dfs(1, 0, 0);
190-
}
191-
192-
private:
193-
unordered_map<long long, int> f;
194-
int k;
195-
196-
int dfs(int i, int j, int jump) {
197-
if (i > k + 1) {
198-
return 0;
199-
}
200-
long long key = ((long long) i << 32) | jump << 1 | j;
201-
if (f.contains(key)) {
202-
return f[key];
203-
}
204-
int ans = i == k ? 1 : 0;
205-
if (i > 0 && j == 0) {
206-
ans += dfs(i - 1, 1, jump);
207-
}
208-
ans += dfs(i + (1 << jump), 0, jump + 1);
209-
f[key] = ans;
210-
return ans;
188+
unordered_map<long long, int> f;
189+
auto dfs = [&](auto&& dfs, int i, int j, int jump) -> int {
190+
if (i > k + 1) {
191+
return 0;
192+
}
193+
long long key = ((long long) i << 32) | jump << 1 | j;
194+
if (f.contains(key)) {
195+
return f[key];
196+
}
197+
int ans = i == k ? 1 : 0;
198+
if (i > 0 && j == 0) {
199+
ans += dfs(dfs, i - 1, 1, jump);
200+
}
201+
ans += dfs(dfs, i + (1 << jump), 0, jump + 1);
202+
f[key] = ans;
203+
return ans;
204+
};
205+
return dfs(dfs, 1, 0, 0);
211206
}
212207
};
213208
```

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /