Skip to content

Commit 3933d68

Browse files
committed
feat: update lc problems
1 parent c340745 commit 3933d68

File tree

42 files changed

+1413
-351
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1413
-351
lines changed

lcp/LCP 73. 探险营地/README.md

+34-28
Original file line numberDiff line numberDiff line change
@@ -5,55 +5,61 @@
55
<!-- 这里写题目描述 -->
66

77
探险家小扣的行动轨迹,都将保存在记录仪中。`expeditions[i]` 表示小扣第 `i` 次探险记录,用一个字符串数组表示。其中的每个「营地」由大小写字母组成,通过子串 `->` 连接。
8+
89
> 例:"Leet->code->Campsite",表示到访了 "Leet"、"code"、"Campsite" 三个营地。
910
1011
`expeditions[0]` 包含了初始小扣已知的所有营地;对于之后的第 `i` 次探险(即 `expeditions[i]` 且 i > 0),如果记录中包含了之前均没出现的营地,则表示小扣 **新发现** 的营地。
1112

1213
请你找出小扣发现新营地最多且索引最小的那次探险,并返回对应的记录索引。如果所有探险记录都没有发现新的营地,返回 `-1`
1314

1415
**注意:**
15-
- 大小写不同的营地视为不同的营地;
16-
- 营地的名称长度均大于 `0`
16+
17+
- 大小写不同的营地视为不同的营地;
18+
- 营地的名称长度均大于 `0`
1719

1820
**示例 1:**
19-
>输入:`expeditions = ["leet->code","leet->code->Campsite->Leet","leet->code->leet->courier"]`
21+
22+
> 输入:`expeditions = ["leet->code","leet->code->Campsite->Leet","leet->code->leet->courier"]`
2023
>
21-
>输出:`1`
24+
> 输出:`1`
2225
>
23-
>解释:
24-
>初始已知的所有营地为 "leet" 和 "code"
25-
>第 1 次,到访了 "leet"、"code"、"Campsite"、"Leet",新发现营地 2 处:"Campsite"、"Leet"
26-
>第 2 次,到访了 "leet"、"code"、"courier",新发现营地 1 处:"courier"
27-
>第 1 次探险发现的新营地数量最多,因此返回 `1`
26+
> 解释:
27+
> 初始已知的所有营地为 "leet" 和 "code"
28+
> 第 1 次,到访了 "leet"、"code"、"Campsite"、"Leet",新发现营地 2 处:"Campsite"、"Leet"
29+
> 第 2 次,到访了 "leet"、"code"、"courier",新发现营地 1 处:"courier"
30+
> 第 1 次探险发现的新营地数量最多,因此返回 `1`
2831
2932
**示例 2:**
30-
>输入:`expeditions = ["Alice->Dex","","Dex"]`
33+
34+
> 输入:`expeditions = ["Alice->Dex","","Dex"]`
3135
>
32-
>输出:`-1`
36+
> 输出:`-1`
3337
>
34-
>解释:
35-
>初始已知的所有营地为 "Alice" 和 "Dex"
36-
>第 1 次,未到访任何营地;
37-
>第 2 次,到访了 "Dex",未新发现营地;
38-
>因为两次探险均未发现新的营地,返回 `-1`
38+
> 解释:
39+
> 初始已知的所有营地为 "Alice" 和 "Dex"
40+
> 第 1 次,未到访任何营地;
41+
> 第 2 次,到访了 "Dex",未新发现营地;
42+
> 因为两次探险均未发现新的营地,返回 `-1`
3943
4044
**示例 3:**
41-
>输入:`expeditions = ["","Gryffindor->Slytherin->Gryffindor","Hogwarts->Hufflepuff->Ravenclaw"]`
45+
46+
> 输入:`expeditions = ["","Gryffindor->Slytherin->Gryffindor","Hogwarts->Hufflepuff->Ravenclaw"]`
4247
>
43-
>输出:`2`
48+
> 输出:`2`
4449
>
45-
>解释:
46-
>初始未发现任何营地;
47-
>第 1 次,到访 "Gryffindor"、"Slytherin" 营地,其中重复到访 "Gryffindor" 两次,
48-
>因此新发现营地为 2 处:"Gryffindor"、"Slytherin"
49-
>第 2 次,到访 "Hogwarts"、"Hufflepuff"、"Ravenclaw" 营地;
50-
>新发现营地 3 处:"Hogwarts"、"Hufflepuff"、"Ravenclaw";
51-
>第 2 次探险发现的新营地数量最多,因此返回 `2`
50+
> 解释:
51+
> 初始未发现任何营地;
52+
> 第 1 次,到访 "Gryffindor"、"Slytherin" 营地,其中重复到访 "Gryffindor" 两次,
53+
> 因此新发现营地为 2 处:"Gryffindor"、"Slytherin"
54+
> 第 2 次,到访 "Hogwarts"、"Hufflepuff"、"Ravenclaw" 营地;
55+
> 新发现营地 3 处:"Hogwarts"、"Hufflepuff"、"Ravenclaw";
56+
> 第 2 次探险发现的新营地数量最多,因此返回 `2`
5257
5358
**提示:**
54-
- `1 <= expeditions.length <= 1000`
55-
- `0 <= expeditions[i].length <= 1000`
56-
- 探险记录中只包含大小写字母和子串"->"
59+
60+
- `1 <= expeditions.length <= 1000`
61+
- `0 <= expeditions[i].length <= 1000`
62+
- 探险记录中只包含大小写字母和子串"->"
5763

5864
## 解法
5965

lcp/LCP 74. 最强祝福力场/README.md

+20-19
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,36 @@
99

1010
若任意一点的 **力场强度** 等于覆盖该点的力场数量,请求出在这片地带中 **力场强度** 最强处的 **力场强度**
1111

12-
**注意:**
13-
- 力场范围的边缘同样被力场覆盖。
12+
**注意:**
13+
14+
- 力场范围的边缘同样被力场覆盖。
1415

1516
**示例 1:**
16-
>输入:
17-
>`forceField = [[0,0,1],[1,0,1]]`
17+
18+
> 输入:
19+
> `forceField = [[0,0,1],[1,0,1]]`
1820
>
19-
>输出:`2`
21+
> 输出:`2`
2022
>
21-
>解释:如图所示,(0.5, 0) 处力场强度最强为 2, (0.5,-0.5)处力场强度同样是 2。
22-
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2074.%20%E6%9C%80%E5%BC%BA%E7%A5%9D%E7%A6%8F%E5%8A%9B%E5%9C%BA/images/1681805536-zGfghe-image.png){:width=400px}
23+
> 解释:如图所示,(0.5, 0) 处力场强度最强为 2, (0.5,-0.5)处力场强度同样是 2。
24+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2074.%20%E6%9C%80%E5%BC%BA%E7%A5%9D%E7%A6%8F%E5%8A%9B%E5%9C%BA/images/1681805536-zGfghe-image.png){:width=400px}
2325
2426
**示例 2:**
25-
>输入:
26-
>`forceField = [[4,4,6],[7,5,3],[1,6,2],[5,6,3]]`
27+
28+
> 输入:
29+
> `forceField = [[4,4,6],[7,5,3],[1,6,2],[5,6,3]]`
2730
>
28-
>输出:`3`
31+
> 输出:`3`
2932
>
30-
>解释:如下图所示,
31-
>`forceField[0]、forceField[1]、forceField[3]` 重叠的区域力场强度最大,返回 `3`
32-
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2074.%20%E6%9C%80%E5%BC%BA%E7%A5%9D%E7%A6%8F%E5%8A%9B%E5%9C%BA/images/1681805437-HQkyZS-image.png){:width=500px}
33-
34-
33+
> 解释:如下图所示,
34+
> `forceField[0]、forceField[1]、forceField[3]` 重叠的区域力场强度最大,返回 `3` > ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2074.%20%E6%9C%80%E5%BC%BA%E7%A5%9D%E7%A6%8F%E5%8A%9B%E5%9C%BA/images/1681805437-HQkyZS-image.png){:width=500px}
3535
3636
**提示:**
37-
- `1 <= forceField.length <= 100`
38-
- `forceField[i].length == 3`
39-
- `0 <= forceField[i][0], forceField[i][1] <= 10^9`
40-
- `1 <= forceField[i][2] <= 10^9`
37+
38+
- `1 <= forceField.length <= 100`
39+
- `forceField[i].length == 3`
40+
- `0 <= forceField[i][0], forceField[i][1] <= 10^9`
41+
- `1 <= forceField[i][2] <= 10^9`
4142

4243
## 解法
4344

lcp/LCP 75. 传送卷轴/README.md

+41-36
Original file line numberDiff line numberDiff line change
@@ -7,63 +7,68 @@
77
随着不断的深入,小扣来到了守护者之森寻找的魔法水晶。首先,他必须先通过守护者的考验。
88

99
考验的区域是一个正方形的迷宫,`maze[i][j]` 表示在迷宫 `i``j` 列的地形:
10-
- 若为 `.` ,表示可以到达的空地;
11-
- 若为 `#` ,表示不可到达的墙壁;
12-
- 若为 `S` ,表示小扣的初始位置;
13-
- 若为 `T` ,表示魔法水晶的位置。
10+
11+
- 若为 `.` ,表示可以到达的空地;
12+
- 若为 `#` ,表示不可到达的墙壁;
13+
- 若为 `S` ,表示小扣的初始位置;
14+
- 若为 `T` ,表示魔法水晶的位置。
1415

1516
小扣每次可以向 上、下、左、右 相邻的位置移动一格。而守护者拥有一份「传送魔法卷轴」,使用规则如下:
16-
- 魔法需要在小扣位于 **空地** 时才能释放,发动后卷轴消失;;
17-
- 发动后,小扣会被传送到水平或者竖直的镜像位置,且目标位置不得为墙壁(如下图所示);
18-
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681789509-wTekFu-image.png){:width=400px}
17+
18+
- 魔法需要在小扣位于 **空地** 时才能释放,发动后卷轴消失;;
19+
- 发动后,小扣会被传送到水平或者竖直的镜像位置,且目标位置不得为墙壁(如下图所示);
20+
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681789509-wTekFu-image.png){:width=400px}
1921

2022
在使用卷轴后,小扣将被「附加负面效果」,因此小扣需要尽可能缩短传送后到达魔法水晶的距离。而守护者的目标是阻止小扣到达魔法水晶的位置;如果无法阻止,则尽可能 **增加** 小扣传送后到达魔法水晶的距离。
2123
假设小扣和守护者都按最优策略行事,返回小扣需要在 「附加负面效果」的情况下 **最少** 移动多少次才能到达魔法水晶。如果无法到达,返回 `-1`
2224

2325
**注意:**
24-
- 守护者可以不使用卷轴;
25-
- 传送后的镜像位置可能与原位置相同。
26+
27+
- 守护者可以不使用卷轴;
28+
- 传送后的镜像位置可能与原位置相同。
2629

2730
**示例 1:**
28-
>输入:`maze = [".....","##S..","...#.","T.#..","###.."]`
31+
32+
> 输入:`maze = [".....","##S..","...#.","T.#..","###.."]`
2933
>
30-
>输出:`7`
34+
> 输出:`7`
3135
>
32-
>解释:如下图所示:
33-
>守护者释放魔法的两个最佳的位置为 [2,0][3,1]
34-
>若小扣经过 [2,0],守护者在该位置释放魔法,
35-
>小扣被传送至 [2,4] 处且加上负面效果,此时小扣还需要移动 7 次才能到达魔法水晶;
36-
>若小扣经过 [3,1],守护者在该位置释放魔法,
37-
>小扣被传送至 [3,3] 处且加上负面效果,此时小扣还需要移动 9 次才能到达魔法水晶;
38-
>因此小扣负面效果下最少需要移动 7 次才能到达魔法水晶。
39-
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681714676-gksEMT-image.png){:width=300px}
40-
36+
> 解释:如下图所示:
37+
> 守护者释放魔法的两个最佳的位置为 [2,0][3,1]
38+
> 若小扣经过 [2,0],守护者在该位置释放魔法,
39+
> 小扣被传送至 [2,4] 处且加上负面效果,此时小扣还需要移动 7 次才能到达魔法水晶;
40+
> 若小扣经过 [3,1],守护者在该位置释放魔法,
41+
> 小扣被传送至 [3,3] 处且加上负面效果,此时小扣还需要移动 9 次才能到达魔法水晶;
42+
> 因此小扣负面效果下最少需要移动 7 次才能到达魔法水晶。
43+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681714676-gksEMT-image.png){:width=300px}
4144
4245
**示例 2:**
43-
>输入:`maze = [".#..","..##",".#S.",".#.T"]`
46+
47+
> 输入:`maze = [".#..","..##",".#S.",".#.T"]`
4448
>
45-
>输出:`-1`
49+
> 输出:`-1`
4650
>
47-
>解释:如下图所示。
48-
>若小扣向下移动至 [3,2],守护者使其传送至 [0,2],小扣将无法到达魔法水晶;
49-
>若小扣向右移动至 [2,3],守护者使其传送至 [2,0],小扣将无法到达魔法水晶;
50-
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681714693-LsxKAh-image.png){:width=300px}
51-
51+
> 解释:如下图所示。
52+
> 若小扣向下移动至 [3,2],守护者使其传送至 [0,2],小扣将无法到达魔法水晶;
53+
> 若小扣向右移动至 [2,3],守护者使其传送至 [2,0],小扣将无法到达魔法水晶;
54+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681714693-LsxKAh-image.png){:width=300px}
5255
5356
**示例 3:**
54-
>输入:`maze = ["S###.","..###","#..##","##..#","###.T"]`
57+
58+
> 输入:`maze = ["S###.","..###","#..##","##..#","###.T"]`
5559
>
56-
>输出:`5`
60+
> 输出:`5`
5761
>
58-
>解释:如下图所示:
59-
>守护者需要小扣在空地才能释放,因此初始无法将其从 [0,0] 传送至 [0,4];
60-
>当小扣移动至 [2,1] 时,释放卷轴将其传送至水平方向的镜像位置 [2,1](为原位置)
61-
>而后小扣需要移动 5 次到达魔法水晶
62-
![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681800985-KrSdru-image.png){:width=300px}
62+
> 解释:如下图所示:
63+
> 守护者需要小扣在空地才能释放,因此初始无法将其从 [0,0] 传送至 [0,4];
64+
> 当小扣移动至 [2,1] 时,释放卷轴将其传送至水平方向的镜像位置 [2,1](为原位置)
65+
> 而后小扣需要移动 5 次到达魔法水晶
66+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/images/1681800985-KrSdru-image.png){:width=300px}
6367
6468
**提示:**
65-
- `4 <= maze.length == maze[i].length <= 200`
66-
- `maze[i][j]` 仅包含 `"."``"#"``"S"``"T"`
69+
70+
- `4 <= maze.length == maze[i].length <= 200`
71+
- `maze[i][j]` 仅包含 `"."``"#"``"S"``"T"`
6772

6873
## 解法
6974

lcp/LCP 76. 魔法棋盘/README.md

+19-14
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,42 @@
55
<!-- 这里写题目描述 -->
66

77
在大小为 `n * m` 的棋盘中,有两种不同的棋子:黑色,红色。当两颗颜色不同的棋子同时满足以下两种情况时,将会产生魔法共鸣:
8-
- 两颗异色棋子在同一行或者同一列
9-
- 两颗异色棋子之间恰好只有一颗棋子
8+
9+
- 两颗异色棋子在同一行或者同一列
10+
- 两颗异色棋子之间恰好只有一颗棋子
1011

1112
由于棋盘上被施加了魔法禁制,棋盘上的部分格子变成问号。`chessboard[i][j]` 表示棋盘第 `i``j` 列的状态:
12-
- 若为 `.` ,表示当前格子确定为空
13-
- 若为 `B` ,表示当前格子确定为 黑棋
14-
- 若为 `R` ,表示当前格子确定为 红棋
15-
- 若为 `?` ,表示当前格子待定
13+
14+
- 若为 `.` ,表示当前格子确定为空
15+
- 若为 `B` ,表示当前格子确定为 黑棋
16+
- 若为 `R` ,表示当前格子确定为 红棋
17+
- 若为 `?` ,表示当前格子待定
1618

1719
现在,探险家小扣的任务是确定所有问号位置的状态(留空/放黑棋/放红棋),使最终的棋盘上,任意两颗棋子间都 **无法** 产生共鸣。请返回可以满足上述条件的放置方案数量。
1820

19-
**示例1:**
21+
**示例 1:**
22+
2023
> 输入:`n = 3, m = 3, chessboard = ["..R","..B","?R?"]`
2124
>
2225
> 输出:`5`
2326
>
2427
> 解释:给定的棋盘如图:
25-
>![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2076.%20%E9%AD%94%E6%B3%95%E6%A3%8B%E7%9B%98/images/1681714583-unbRox-image.png){:height=150px}
28+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2076.%20%E9%AD%94%E6%B3%95%E6%A3%8B%E7%9B%98/images/1681714583-unbRox-image.png){:height=150px}
2629
> 所有符合题意的最终局面如图:
27-
>![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2076.%20%E9%AD%94%E6%B3%95%E6%A3%8B%E7%9B%98/images/1681714596-beaOHK-image.png){:height=150px}
30+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2076.%20%E9%AD%94%E6%B3%95%E6%A3%8B%E7%9B%98/images/1681714596-beaOHK-image.png){:height=150px}
31+
32+
**示例 2:**
2833

29-
**示例2:**
3034
> 输入:`n = 3, m = 3, chessboard = ["?R?","B?B","?R?"]`
3135
>
3236
> 输出:`105`
3337
3438
**提示:**
35-
- `n == chessboard.length`
36-
- `m == chessboard[i].length`
37-
- `1 <= n*m <= 30`
38-
- `chessboard` 中仅包含 `"."、"B"、"R"、"?"`
39+
40+
- `n == chessboard.length`
41+
- `m == chessboard[i].length`
42+
- `1 <= n*m <= 30`
43+
- `chessboard` 中仅包含 `"."、"B"、"R"、"?"`
3944

4045
## 解法
4146

lcp/main.py

+1-1
Large diffs are not rendered by default.

solution/0100-0199/0128.Longest Consecutive Sequence/README_EN.md

-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ We use a hash table to store all the elements in the array, and then we traverse
5454

5555
Time complexity $O(n)$, space complexity $O(n)$, where $n$ is the length of the array.
5656

57-
5857
<!-- tabs:start -->
5958

6059
### **Python3**

solution/0100-0199/0155.Min Stack/README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -382,25 +382,25 @@ impl MinStack {
382382
public class MinStack {
383383
private Stack<int> stk1 = new Stack<int>();
384384
private Stack<int> stk2 = new Stack<int>();
385-
385+
386386
public MinStack() {
387387
stk2.Push(int.MaxValue);
388388
}
389-
389+
390390
public void Push(int x) {
391391
stk1.Push(x);
392392
stk2.Push(Math.Min(x, GetMin()));
393393
}
394-
394+
395395
public void Pop() {
396396
stk1.Pop();
397397
stk2.Pop();
398398
}
399-
399+
400400
public int Top() {
401401
return stk1.Peek();
402402
}
403-
403+
404404
public int GetMin() {
405405
return stk2.Peek();
406406
}

0 commit comments

Comments
 (0)