Skip to content

Commit 08fbe66

Browse files
committed
feat: add solutions to lc problem: No.1020.Number of Enclaves
1 parent 1c9ce7c commit 08fbe66

24 files changed

+1080
-3
lines changed

lcp/LCP 39. 无人机方阵/README.md

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# [LCP 39. 无人机方阵](https://leetcode-cn.com/problems/0jQkd0)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
在 「力扣挑战赛」 开幕式的压轴节目 「无人机方阵」中,每一架无人机展示一种灯光颜色。 无人机方阵通过两种操作进行颜色图案变换:
8+
9+
- 调整无人机的位置布局
10+
- 切换无人机展示的灯光颜色
11+
12+
给定两个大小均为 `N*M` 的二维数组 `source``target` 表示无人机方阵表演的两种颜色图案,由于无人机切换灯光颜色的耗能很大,请返回从 `source``target` 最少需要多少架无人机切换灯光颜色。
13+
14+
**注意:** 调整无人机的位置布局时无人机的位置可以随意变动。
15+
16+
**示例 1:**
17+
18+
> 输入:`source = [[1,3],[5,4]], target = [[3,1],[6,5]]`
19+
>
20+
> 输出:`1`
21+
>
22+
> 解释:
23+
> 最佳方案为
24+
> `[0,1]` 处的无人机移动至 `[0,0]` 处;
25+
> `[0,0]` 处的无人机移动至 `[0,1]` 处;
26+
> `[1,0]` 处的无人机移动至 `[1,1]` 处;
27+
> `[1,1]` 处的无人机移动至 `[1,0]` 处,其灯光颜色切换为颜色编号为 `6` 的灯光;
28+
> 因此从`source``target` 所需要的最少灯光切换次数为 1。
29+
> ![8819ccdd664e91c78cde3bba3c701986.gif](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2039.%20无人机方阵/images/1628823765-uCDaux-8819ccdd664e91c78cde3bba3c701986.gif){:height=300px}
30+
31+
**示例 2:**
32+
33+
> 输入:`source = [[1,2,3],[3,4,5]], target = [[1,3,5],[2,3,4]]`
34+
>
35+
> 输出:`0`
36+
> 解释:
37+
> 仅需调整无人机的位置布局,便可完成图案切换。因此不需要无人机切换颜色
38+
39+
**提示:**
40+
`n == source.length == target.length`
41+
`m == source[i].length == target[i].length`
42+
`1 <= n, m <=100`
43+
`1 <= source[i][j], target[i][j] <=10^4`
44+
45+
## 解法
46+
47+
<!-- 这里可写通用的实现逻辑 -->
48+
49+
<!-- tabs:start -->
50+
51+
### **Python3**
52+
53+
<!-- 这里可写当前语言的特殊实现逻辑 -->
54+
55+
```python
56+
57+
```
58+
59+
### **Java**
60+
61+
<!-- 这里可写当前语言的特殊实现逻辑 -->
62+
63+
```java
64+
65+
```
66+
67+
### **...**
68+
69+
```
70+
71+
```
72+
73+
<!-- tabs:end -->
Loading

lcp/LCP 40. 心算挑战/README.md

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# [LCP 40. 心算挑战](https://leetcode-cn.com/problems/uOAnQW)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
「力扣挑战赛」心算项目的挑战比赛中,要求选手从 `N` 张卡牌中选出 `cnt` 张卡牌,若这 `cnt` 张卡牌数字总和为偶数,则选手成绩「有效」且得分为 `cnt` 张卡牌数字总和。
8+
给定数组 `cards``cnt`,其中 `cards[i]` 表示第 `i` 张卡牌上的数字。 请帮参赛选手计算最大的有效得分。若不存在获取有效得分的卡牌方案,则返回 0。
9+
10+
**示例 1:**
11+
12+
> 输入:`cards = [1,2,8,9], cnt = 3`
13+
>
14+
> 输出:`18`
15+
>
16+
> 解释:选择数字为 1、8、9 的这三张卡牌,此时可获得最大的有效得分 1+8+9=18。
17+
18+
**示例 2:**
19+
20+
> 输入:`cards = [3,3,1], cnt = 1`
21+
>
22+
> 输出:`0`
23+
>
24+
> 解释:不存在获取有效得分的卡牌方案。
25+
26+
**提示:**
27+
28+
- `1 <= cnt <= cards.length <= 10^5`
29+
- `1 <= cards[i] <= 1000`
30+
31+
## 解法
32+
33+
<!-- 这里可写通用的实现逻辑 -->
34+
35+
<!-- tabs:start -->
36+
37+
### **Python3**
38+
39+
<!-- 这里可写当前语言的特殊实现逻辑 -->
40+
41+
```python
42+
43+
```
44+
45+
### **Java**
46+
47+
<!-- 这里可写当前语言的特殊实现逻辑 -->
48+
49+
```java
50+
51+
```
52+
53+
### **...**
54+
55+
```
56+
57+
```
58+
59+
<!-- tabs:end -->

lcp/LCP 41. 黑白翻转棋/README.md

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# [LCP 41. 黑白翻转棋](https://leetcode-cn.com/problems/fHi6rV)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
`n*m` 大小的棋盘中,有黑白两种棋子,黑棋记作字母 `"X"`, 白棋记作字母 `"O"`,空余位置记作 `"."`。当落下的棋子与其他相同颜色的棋子在行、列或对角线完全包围(中间不存在空白位置)另一种颜色的棋子,则可以翻转这些棋子的颜色。
8+
9+
![1.gif](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2041.%20黑白翻转棋/images/1630396029-eTgzpN-6da662e67368466a96d203f67bb6e793.gif){:height=170px}![2.gif](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2041.%20黑白翻转棋/images/1630396240-nMvdcc-8e4261afe9f60e05a4f740694b439b6b.gif){:height=170px}![3.gif](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2041.%20黑白翻转棋/images/1630396291-kEtzLL-6fcb682daeecb5c3f56eb88b23c81d33.gif){:height=170px}
10+
11+
「力扣挑战赛」黑白翻转棋项目中,将提供给选手一个未形成可翻转棋子的棋盘残局,其状态记作 `chessboard`。若下一步可放置一枚黑棋,请问选手最多能翻转多少枚白棋。
12+
13+
**注意:**
14+
15+
- 若翻转白棋成黑棋后,棋盘上仍存在可以翻转的白棋,将可以 **继续** 翻转白棋
16+
- 输入数据保证初始棋盘状态无可以翻转的棋子且存在空余位置
17+
18+
**示例 1:**
19+
20+
> 输入:`chessboard = ["....X.","....X.","XOOO..","......","......"]`
21+
>
22+
> 输出:`3`
23+
>
24+
> 解释:
25+
> 可以选择下在 `[2,4]` 处,能够翻转白方三枚棋子。
26+
27+
**示例 2:**
28+
29+
> 输入:`chessboard = [".X.",".O.","XO."]`
30+
>
31+
> 输出:`2`
32+
>
33+
> 解释:
34+
> 可以选择下在 `[2,2]` 处,能够翻转白方两枚棋子。
35+
> ![2126c1d21b1b9a9924c639d449cc6e65.gif](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2041.%20黑白翻转棋/images/1626683255-OBtBud-2126c1d21b1b9a9924c639d449cc6e65.gif)
36+
37+
**示例 3:**
38+
39+
> 输入:`chessboard = [".......",".......",".......","X......",".O.....","..O....","....OOX"]`
40+
>
41+
> 输出:`4`
42+
>
43+
> 解释:
44+
> 可以选择下在 `[6,3]` 处,能够翻转白方四枚棋子。
45+
> ![803f2f04098b6174397d6c696f54d709.gif](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2041.%20黑白翻转棋/images/1630393770-Puyked-803f2f04098b6174397d6c696f54d709.gif)
46+
47+
**提示:**
48+
49+
- `1 <= chessboard.length, chessboard[i].length <= 8`
50+
- `chessboard[i]` 仅包含 `"."、"O"``"X"`
51+
52+
## 解法
53+
54+
<!-- 这里可写通用的实现逻辑 -->
55+
56+
<!-- tabs:start -->
57+
58+
### **Python3**
59+
60+
<!-- 这里可写当前语言的特殊实现逻辑 -->
61+
62+
```python
63+
64+
```
65+
66+
### **Java**
67+
68+
<!-- 这里可写当前语言的特殊实现逻辑 -->
69+
70+
```java
71+
72+
```
73+
74+
### **...**
75+
76+
```
77+
78+
```
79+
80+
<!-- tabs:end -->
Loading
Loading
Loading
Loading
Loading

lcp/LCP 42. 玩具套圈/README.md

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# [LCP 42. 玩具套圈](https://leetcode-cn.com/problems/vFjcfV)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
「力扣挑战赛」场地外,小力组织了一个套玩具的游戏。所有的玩具摆在平地上,`toys[i]``[xi,yi,ri]` 的形式记录了第 `i` 个玩具的坐标 `(xi,yi)` 和半径 `ri`。小扣试玩了一下,他扔了若干个半径均为 `r` 的圈,`circles[j]` 记录了第 `j` 个圈的坐标 `(xj,yj)`。套圈的规则如下:
8+
9+
- 若一个玩具被某个圈完整覆盖了(即玩具的任意部分均在圈内或者圈上),则该玩具被套中。
10+
- 若一个玩具被多个圈同时套中,最终仅计算为套中一个玩具
11+
12+
请帮助小扣计算,他成功套中了多少玩具。
13+
14+
**注意:**
15+
16+
- 输入数据保证任意两个玩具的圆心不会重合,但玩具之间可能存在重叠。
17+
18+
**示例 1:**
19+
20+
> 输入:`toys = [[3,3,1],[3,2,1]], circles = [[4,3]], r = 2`
21+
>
22+
> 输出:`1`
23+
>
24+
> 解释: 如图所示,仅套中一个玩具
25+
> ![image.png](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2042.%20玩具套圈/images/1629194140-ydKiGF-image.png)
26+
27+
**示例 2:**
28+
29+
> 输入:`toys = [[1,3,2],[4,3,1],[7,1,2]], circles = [[1,0],[3,3]], r = 4`
30+
>
31+
> 输出:`2`
32+
>
33+
> 解释: 如图所示,套中两个玩具
34+
> ![image.png](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2042.%20玩具套圈/images/1629194157-RiOAuy-image.png){:width="400px"}
35+
36+
**提示:**
37+
38+
- `1 <= toys.length <= 10^4`
39+
- `0 <= toys[i][0], toys[i][1] <= 10^9`
40+
- `1 <= circles.length <= 10^4`
41+
- `0 <= circles[i][0], circles[i][1] <= 10^9`
42+
- `1 <= toys[i][2], r <= 10`
43+
44+
## 解法
45+
46+
<!-- 这里可写通用的实现逻辑 -->
47+
48+
<!-- tabs:start -->
49+
50+
### **Python3**
51+
52+
<!-- 这里可写当前语言的特殊实现逻辑 -->
53+
54+
```python
55+
56+
```
57+
58+
### **Java**
59+
60+
<!-- 这里可写当前语言的特殊实现逻辑 -->
61+
62+
```java
63+
64+
```
65+
66+
### **...**
67+
68+
```
69+
70+
```
71+
72+
<!-- tabs:end -->
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# [LCP 43. 十字路口的交通](https://leetcode-cn.com/problems/Y1VbOX)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
前往「力扣挑战赛」场馆的道路上,有一个拥堵的十字路口,该十字路口由两条双向两车道的路交叉构成。由于信号灯故障,交警需要手动指挥拥堵车辆。假定路口没有新的来车且一辆车从一个车道驶入另一个车道所需的时间恰好为一秒钟,长度为 4 的一维字符串数组 `directions` 中按照 **东、南、西、北** 顺序记录了四个方向从最靠近路口到最远离路口的车辆计划开往的方向。其中:
8+
9+
- `"E"` 表示向东行驶;
10+
- `"S"` 表示向南行驶;
11+
- `"W"` 表示向西行驶;
12+
- `"N"` 表示向北行驶。
13+
14+
交警每秒钟只能指挥各个车道距离路口最近的一辆车,且每次指挥需要满足如下规则:
15+
16+
- 同一秒钟内,一个方向的车道只允许驶出一辆车;
17+
- 同一秒钟内,一个方向的车道只允许驶入一辆车;
18+
- 同一秒钟内,车辆的行驶路线不可相交。
19+
20+
请返回最少需要几秒钟,该十字路口等候的车辆才能全部走完。
21+
22+
各个车道驶出的车辆可能的行驶路线如图所示:
23+
24+
![图片.png](https://cdn.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2043.%20十字路口的交通/images/1630393755-gyPeMM-%E5%9B%BE%E7%89%87.png){:height="350px"}
25+
26+
**注意:**
27+
28+
- 测试数据保证不会出现掉头行驶指令,即某一方向的行驶车辆计划开往的方向不会是当前车辆所在的车道的方向;
29+
- 表示堵塞车辆行驶方向的字符串仅用大写字母 `"E"``"N"``"W"``"S"` 表示。
30+
31+
**示例 1:**
32+
33+
> 输入:`directions = ["W","N","ES","W"]`
34+
>
35+
> 输出:`2`
36+
>
37+
> 解释:
38+
> 第 1 秒:东西方向排在最前的车先行,剩余车辆状态 `["","N","S","W"]`
39+
> 第 2 秒:南、西、北方向的车行驶,路口无等待车辆;
40+
> 因此最少需要 2 秒,返回 2。
41+
42+
**示例 2:**
43+
44+
> 输入:`directions = ["NS","WE","SE","EW"]`
45+
>
46+
> 输出:`3`
47+
>
48+
> 解释:
49+
> 第 1 秒:四个方向排在最前的车均可驶出;
50+
> 第 2 秒:东南方向的车驶出,剩余车辆状态 `["","","E","W"]`
51+
> 第 3 秒:西北方向的车驶出。
52+
53+
**提示:**
54+
55+
- `directions.length = 4`
56+
- `0 <= directions[i].length <= 20`
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 -->
Loading

lcp/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
| [LCP 36](https://leetcode-cn.com/problems/Up5XYM) | [ 最多牌组数](/lcp/LCP%2036.%20%E6%9C%80%E5%A4%9A%E7%89%8C%E7%BB%84%E6%95%B0/README.md) | `数组`,`动态规划`,`排序` | 困难 |
4747
| [LCP 37](https://leetcode-cn.com/problems/zui-xiao-ju-xing-mian-ji) | [ 最小矩形面积](/lcp/LCP%2037.%20%E6%9C%80%E5%B0%8F%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF/README.md) | `贪心`,`几何`,`数组`,`数学`,`组合数学`,`排序` | 困难 |
4848
| [LCP 38](https://leetcode-cn.com/problems/7rLGCR) | [ 守卫城堡](/lcp/LCP%2038.%20%E5%AE%88%E5%8D%AB%E5%9F%8E%E5%A0%A1/README.md) | `数组`,`动态规划`,`矩阵` | 困难 |
49+
| [LCP 39](https://leetcode-cn.com/problems/0jQkd0) | [ 无人机方阵](/lcp/LCP%2039.%20%E6%97%A0%E4%BA%BA%E6%9C%BA%E6%96%B9%E9%98%B5/README.md) | | 简单 |
50+
| [LCP 40](https://leetcode-cn.com/problems/uOAnQW) | [ 心算挑战](/lcp/LCP%2040.%20%E5%BF%83%E7%AE%97%E6%8C%91%E6%88%98/README.md) | | 简单 |
51+
| [LCP 41](https://leetcode-cn.com/problems/fHi6rV) | [ 黑白翻转棋](/lcp/LCP%2041.%20%E9%BB%91%E7%99%BD%E7%BF%BB%E8%BD%AC%E6%A3%8B/README.md) | | 中等 |
52+
| [LCP 42](https://leetcode-cn.com/problems/vFjcfV) | [ 玩具套圈](/lcp/LCP%2042.%20%E7%8E%A9%E5%85%B7%E5%A5%97%E5%9C%88/README.md) | | 困难 |
53+
| [LCP 43](https://leetcode-cn.com/problems/Y1VbOX) | [ 十字路口的交通](/lcp/LCP%2043.%20%E5%8D%81%E5%AD%97%E8%B7%AF%E5%8F%A3%E7%9A%84%E4%BA%A4%E9%80%9A/README.md) | | 困难 |
4954

5055
## 版权
5156

lcp/main.py

+129
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)