Skip to content

Commit 855c1c7

Browse files
committed
chore: add new lcp problems
1 parent c3fe66c commit 855c1c7

17 files changed

+398
-1
lines changed

lcp/LCP 72. 补给马车/README.md

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# [LCP 72. 补给马车](https://leetcode.cn/problems/hqCnmP)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
远征队即将开启未知的冒险之旅,不过在此之前,将对补给车队进行最后的检查。`supplies[i]` 表示编号为 `i` 的补给马车装载的物资数量。
8+
考虑到车队过长容易被野兽偷袭,他们决定将车队的长度变为原来的一半(向下取整),计划为:
9+
- 找出车队中 **物资之和最小** 两辆 **相邻** 马车,将它们车辆的物资整合为一辆。若存在多组物资之和相同的马车,则取编号最小的两辆马车进行整合;
10+
- 重复上述操作直到车队长度符合要求。
11+
12+
请返回车队长度符合要求后,物资的分布情况。
13+
14+
**示例 1:**
15+
>输入:`supplies = [7,3,6,1,8]`
16+
>
17+
>输出:`[10,15]`
18+
>
19+
>解释:
20+
> 第 1 次合并,符合条件的两辆马车为 6,1,合并后的车队为 [7,3,7,8]
21+
> 第 2 次合并,符合条件的两辆马车为 (7,3) 和 (3,7),取编号最小的 (7,3),合并后的车队为 [10,7,8]
22+
> 第 3 次合并,符合条件的两辆马车为 7,8,合并后的车队为 [10,15]
23+
>返回 `[10,15]`
24+
25+
**示例 2:**
26+
>输入:`supplies = [1,3,1,5]`
27+
>
28+
>输出:`[5,5]`
29+
30+
**解释:**
31+
- `2 <= supplies.length <= 1000`
32+
- `1 <= supplies[i] <= 1000`
33+
34+
## 解法
35+
36+
<!-- 这里可写通用的实现逻辑 -->
37+
38+
<!-- tabs:start -->
39+
40+
### **Python3**
41+
42+
<!-- 这里可写当前语言的特殊实现逻辑 -->
43+
44+
```python
45+
46+
```
47+
48+
### **Java**
49+
50+
<!-- 这里可写当前语言的特殊实现逻辑 -->
51+
52+
```java
53+
54+
```
55+
56+
### **...**
57+
58+
```
59+
60+
```
61+
62+
<!-- tabs:end -->

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

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# [LCP 73. 探险营地](https://leetcode.cn/problems/0Zeoeg)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
探险家小扣的行动轨迹,都将保存在记录仪中。`expeditions[i]` 表示小扣第 `i` 次探险记录,用一个字符串数组表示。其中的每个「营地」由大小写字母组成,通过子串 `->` 连接。
8+
> 例:"Leet->code->Campsite",表示到访了 "Leet"、"code"、"Campsite" 三个营地。
9+
10+
`expeditions[0]` 包含了初始小扣已知的所有营地;对于之后的第 `i` 次探险(即 `expeditions[i]` 且 i > 0),如果记录中包含了之前均没出现的营地,则表示小扣 **新发现** 的营地。
11+
12+
请你找出小扣发现新营地最多且索引最小的那次探险,并返回对应的记录索引。如果所有探险记录都没有发现新的营地,返回 `-1`
13+
14+
**注意:**
15+
- 大小写不同的营地视为不同的营地;
16+
- 营地的名称长度均大于 `0`
17+
18+
**示例 1:**
19+
>输入:`expeditions = ["leet->code","leet->code->Campsite->Leet","leet->code->leet->courier"]`
20+
>
21+
>输出:`1`
22+
>
23+
>解释:
24+
>初始已知的所有营地为 "leet" 和 "code"
25+
>第 1 次,到访了 "leet"、"code"、"Campsite"、"Leet",新发现营地 2 处:"Campsite"、"Leet"
26+
>第 2 次,到访了 "leet"、"code"、"courier",新发现营地 1 处:"courier"
27+
>第 1 次探险发现的新营地数量最多,因此返回 `1`
28+
29+
**示例 2:**
30+
>输入:`expeditions = ["Alice->Dex","","Dex"]`
31+
>
32+
>输出:`-1`
33+
>
34+
>解释:
35+
>初始已知的所有营地为 "Alice" 和 "Dex"
36+
>第 1 次,未到访任何营地;
37+
>第 2 次,到访了 "Dex",未新发现营地;
38+
>因为两次探险均未发现新的营地,返回 `-1`
39+
40+
**示例 3:**
41+
>输入:`expeditions = ["","Gryffindor->Slytherin->Gryffindor","Hogwarts->Hufflepuff->Ravenclaw"]`
42+
>
43+
>输出:`2`
44+
>
45+
>解释:
46+
>初始未发现任何营地;
47+
>第 1 次,到访 "Gryffindor"、"Slytherin" 营地,其中重复到访 "Gryffindor" 两次,
48+
>因此新发现营地为 2 处:"Gryffindor"、"Slytherin"
49+
>第 2 次,到访 "Hogwarts"、"Hufflepuff"、"Ravenclaw" 营地;
50+
>新发现营地 3 处:"Hogwarts"、"Hufflepuff"、"Ravenclaw";
51+
>第 2 次探险发现的新营地数量最多,因此返回 `2`
52+
53+
**提示:**
54+
- `1 <= expeditions.length <= 1000`
55+
- `0 <= expeditions[i].length <= 1000`
56+
- 探险记录中只包含大小写字母和子串"->"
57+
58+
## 解法
59+
60+
<!-- 这里可写通用的实现逻辑 -->
61+
62+
<!-- tabs:start -->
63+
64+
### **Python3**
65+
66+
<!-- 这里可写当前语言的特殊实现逻辑 -->
67+
68+
```python
69+
70+
```
71+
72+
### **Java**
73+
74+
<!-- 这里可写当前语言的特殊实现逻辑 -->
75+
76+
```java
77+
78+
```
79+
80+
### **...**
81+
82+
```
83+
84+
```
85+
86+
<!-- tabs:end -->
+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# [LCP 74. 最强祝福力场](https://leetcode.cn/problems/xepqZ5)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
小扣在探索丛林的过程中,无意间发现了传说中“落寞的黄金之都”。而在这片建筑废墟的地带中,小扣使用探测仪监测到了存在某种带有「祝福」效果的力场。
8+
经过不断的勘测记录,小扣将所有力场的分布都记录了下来。`forceField[i] = [x,y,side]` 表示第 `i` 片力场将覆盖以坐标 `(x,y)` 为中心,边长为 `side` 的正方形区域。
9+
10+
若任意一点的 **力场强度** 等于覆盖该点的力场数量,请求出在这片地带中 **力场强度** 最强处的 **力场强度**
11+
12+
**注意:**
13+
- 力场范围的边缘同样被力场覆盖。
14+
15+
**示例 1:**
16+
>输入:
17+
>`forceField = [[0,0,1],[1,0,1]]`
18+
>
19+
>输出:`2`
20+
>
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+
24+
**示例 2:**
25+
>输入:
26+
>`forceField = [[4,4,6],[7,5,3],[1,6,2],[5,6,3]]`
27+
>
28+
>输出:`3`
29+
>
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+
35+
36+
**提示:**
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`
41+
42+
## 解法
43+
44+
<!-- 这里可写通用的实现逻辑 -->
45+
46+
<!-- tabs:start -->
47+
48+
### **Python3**
49+
50+
<!-- 这里可写当前语言的特殊实现逻辑 -->
51+
52+
```python
53+
54+
```
55+
56+
### **Java**
57+
58+
<!-- 这里可写当前语言的特殊实现逻辑 -->
59+
60+
```java
61+
62+
```
63+
64+
### **...**
65+
66+
```
67+
68+
```
69+
70+
<!-- tabs:end -->
Loading
Loading

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

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# [LCP 75. 传送卷轴](https://leetcode.cn/problems/rdmXM7)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
随着不断的深入,小扣来到了守护者之森寻找的魔法水晶。首先,他必须先通过守护者的考验。
8+
9+
考验的区域是一个正方形的迷宫,`maze[i][j]` 表示在迷宫 `i``j` 列的地形:
10+
- 若为 `.` ,表示可以到达的空地;
11+
- 若为 `#` ,表示不可到达的墙壁;
12+
- 若为 `S` ,表示小扣的初始位置;
13+
- 若为 `T` ,表示魔法水晶的位置。
14+
15+
小扣每次可以向 上、下、左、右 相邻的位置移动一格。而守护者拥有一份「传送魔法卷轴」,使用规则如下:
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}
19+
20+
在使用卷轴后,小扣将被「附加负面效果」,因此小扣需要尽可能缩短传送后到达魔法水晶的距离。而守护者的目标是阻止小扣到达魔法水晶的位置;如果无法阻止,则尽可能 **增加** 小扣传送后到达魔法水晶的距离。
21+
假设小扣和守护者都按最优策略行事,返回小扣需要在 「附加负面效果」的情况下 **最少** 移动多少次才能到达魔法水晶。如果无法到达,返回 `-1`
22+
23+
**注意:**
24+
- 守护者可以不使用卷轴;
25+
- 传送后的镜像位置可能与原位置相同。
26+
27+
**示例 1:**
28+
>输入:`maze = [".....","##S..","...#.","T.#..","###.."]`
29+
>
30+
>输出:`7`
31+
>
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+
41+
42+
**示例 2:**
43+
>输入:`maze = [".#..","..##",".#S.",".#.T"]`
44+
>
45+
>输出:`-1`
46+
>
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+
52+
53+
**示例 3:**
54+
>输入:`maze = ["S###.","..###","#..##","##..#","###.T"]`
55+
>
56+
>输出:`5`
57+
>
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}
63+
64+
**提示:**
65+
- `4 <= maze.length == maze[i].length <= 200`
66+
- `maze[i][j]` 仅包含 `"."``"#"``"S"``"T"`
67+
68+
## 解法
69+
70+
<!-- 这里可写通用的实现逻辑 -->
71+
72+
<!-- tabs:start -->
73+
74+
### **Python3**
75+
76+
<!-- 这里可写当前语言的特殊实现逻辑 -->
77+
78+
```python
79+
80+
```
81+
82+
### **Java**
83+
84+
<!-- 这里可写当前语言的特殊实现逻辑 -->
85+
86+
```java
87+
88+
```
89+
90+
### **...**
91+
92+
```
93+
94+
```
95+
96+
<!-- tabs:end -->
Loading
Loading
Loading
Loading

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

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# [LCP 76. 魔法棋盘](https://leetcode.cn/problems/1ybDKD)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
在大小为 `n * m` 的棋盘中,有两种不同的棋子:黑色,红色。当两颗颜色不同的棋子同时满足以下两种情况时,将会产生魔法共鸣:
8+
- 两颗异色棋子在同一行或者同一列
9+
- 两颗异色棋子之间恰好只有一颗棋子
10+
11+
由于棋盘上被施加了魔法禁制,棋盘上的部分格子变成问号。`chessboard[i][j]` 表示棋盘第 `i``j` 列的状态:
12+
- 若为 `.` ,表示当前格子确定为空
13+
- 若为 `B` ,表示当前格子确定为 黑棋
14+
- 若为 `R` ,表示当前格子确定为 红棋
15+
- 若为 `?` ,表示当前格子待定
16+
17+
现在,探险家小扣的任务是确定所有问号位置的状态(留空/放黑棋/放红棋),使最终的棋盘上,任意两颗棋子间都 **无法** 产生共鸣。请返回可以满足上述条件的放置方案数量。
18+
19+
**示例1:**
20+
> 输入:`n = 3, m = 3, chessboard = ["..R","..B","?R?"]`
21+
>
22+
> 输出:`5`
23+
>
24+
> 解释:给定的棋盘如图:
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}
26+
> 所有符合题意的最终局面如图:
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}
28+
29+
**示例2:**
30+
> 输入:`n = 3, m = 3, chessboard = ["?R?","B?B","?R?"]`
31+
>
32+
> 输出:`105`
33+
34+
**提示:**
35+
- `n == chessboard.length`
36+
- `m == chessboard[i].length`
37+
- `1 <= n*m <= 30`
38+
- `chessboard` 中仅包含 `"."、"B"、"R"、"?"`
39+
40+
## 解法
41+
42+
<!-- 这里可写通用的实现逻辑 -->
43+
44+
<!-- tabs:start -->
45+
46+
### **Python3**
47+
48+
<!-- 这里可写当前语言的特殊实现逻辑 -->
49+
50+
```python
51+
52+
```
53+
54+
### **Java**
55+
56+
<!-- 这里可写当前语言的特殊实现逻辑 -->
57+
58+
```java
59+
60+
```
61+
62+
### **...**
63+
64+
```
65+
66+
```
67+
68+
<!-- tabs:end -->
Loading
Loading

lcp/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@
8080
| [LCP 69](https://leetcode.cn/problems/rMeRt2) | [ Hello LeetCode!](/lcp/LCP%2069.%20Hello%20LeetCode%21/README.md) | `位运算`,`数组`,`字符串`,`动态规划`,`状态压缩` | 困难 |
8181
| [LCP 70](https://leetcode.cn/problems/XxZZjK) | [ 沙地治理](/lcp/LCP%2070.%20%E6%B2%99%E5%9C%B0%E6%B2%BB%E7%90%86/README.md) | `数组`,`数学` | 困难 |
8282
| [LCP 71](https://leetcode.cn/problems/kskhHQ) | [ 集水器](/lcp/LCP%2071.%20%E9%9B%86%E6%B0%B4%E5%99%A8/README.md) | `并查集`,`数组`,`矩阵` | 困难 |
83+
| [LCP 72](https://leetcode.cn/problems/hqCnmP) | [ 补给马车](/lcp/LCP%2072.%20%E8%A1%A5%E7%BB%99%E9%A9%AC%E8%BD%A6/README.md) | | 简单 |
84+
| [LCP 73](https://leetcode.cn/problems/0Zeoeg) | [ 探险营地](/lcp/LCP%2073.%20%E6%8E%A2%E9%99%A9%E8%90%A5%E5%9C%B0/README.md) | | 中等 |
85+
| [LCP 74](https://leetcode.cn/problems/xepqZ5) | [ 最强祝福力场](/lcp/LCP%2074.%20%E6%9C%80%E5%BC%BA%E7%A5%9D%E7%A6%8F%E5%8A%9B%E5%9C%BA/README.md) | | 中等 |
86+
| [LCP 75](https://leetcode.cn/problems/rdmXM7) | [ 传送卷轴](/lcp/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4/README.md) | | 困难 |
87+
| [LCP 76](https://leetcode.cn/problems/1ybDKD) | [ 魔法棋盘](/lcp/LCP%2076.%20%E9%AD%94%E6%B3%95%E6%A3%8B%E7%9B%98/README.md) | | 困难 |
8388

8489
## 版权
8590

0 commit comments

Comments
 (0)