Skip to content

Commit 3bd061a

Browse files
committed
feat: add lcp problems
1 parent aa6eb86 commit 3bd061a

File tree

58 files changed

+1854
-55
lines changed

Some content is hidden

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

58 files changed

+1854
-55
lines changed

index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify-copy-code@2.1.1/dist/docsify-copy-code.min.js"></script>
145145
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify/lib/plugins/search.min.js"></script>
146146
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify/lib/plugins/zoom-image.min.js"></script>
147-
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>
147+
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify-tabs@1/dist/docsify-tabs@1.js"></script>
148148
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify-pagination/dist/docsify-pagination.min.js"></script>
149149
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify-darklight-theme@latest/dist/index.min.js"></script>
150150
<script src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/npm/docsify-contributors@latest/dist/index.min.js"></script>

lcp/LCP 50. 宝石补给/README.md

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# [LCP 50. 宝石补给](https://leetcode.cn/problems/WHnhjV)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
欢迎各位勇者来到力扣新手村,在开始试炼之前,请各位勇者先进行「宝石补给」。
8+
9+
每位勇者初始都拥有一些能量宝石, `gem[i]` 表示第 `i` 位勇者的宝石数量。现在这些勇者们进行了一系列的赠送,`operations[j] = [x, y]` 表示在第 `j` 次的赠送中 第 `x` 位勇者将自己一半的宝石(需向下取整)赠送给第 `y` 位勇者。
10+
11+
在完成所有的赠送后,请找到拥有**最多**宝石的勇者和拥有**最少**宝石的勇者,并返回他们二者的宝石数量**之差**
12+
13+
**注意:**
14+
15+
- 赠送将按顺序逐步进行。
16+
17+
**示例 1:**
18+
19+
> 输入:`gem = [3,1,2], operations = [[0,2],[2,1],[2,0]]`
20+
>
21+
> 输出:`2`
22+
>
23+
> 解释:
24+
> 第 1 次操作,勇者 `0` 将一半的宝石赠送给勇者 `2``gem = [2,1,3]`
25+
> 第 2 次操作,勇者 `2` 将一半的宝石赠送给勇者 `1``gem = [2,2,2]`
26+
> 第 3 次操作,勇者 `2` 将一半的宝石赠送给勇者 `0``gem = [3,2,1]`
27+
> 返回 3 - 1 = 2
28+
29+
**示例 2:**
30+
31+
> 输入:`gem = [100,0,50,100], operations = [[0,2],[0,1],[3,0],[3,0]]`
32+
>
33+
> 输出:`75`
34+
>
35+
> 解释:
36+
> 第 1 次操作,勇者 `0` 将一半的宝石赠送给勇者 `2``gem = [50,0,100,100]`
37+
> 第 2 次操作,勇者 `0` 将一半的宝石赠送给勇者 `1``gem = [25,25,100,100]`
38+
> 第 3 次操作,勇者 `3` 将一半的宝石赠送给勇者 `0``gem = [75,25,100,50]`
39+
> 第 4 次操作,勇者 `3` 将一半的宝石赠送给勇者 `0``gem = [100,25,100,25]`
40+
> 返回 100 - 25 = 75
41+
42+
**示例 3:**
43+
44+
> 输入:`gem = [0,0,0,0], operations = [[1,2],[3,1],[1,2]]`
45+
>
46+
> 输出:`0`
47+
48+
**提示:**
49+
50+
- `2 <= gem.length <= 10^3`
51+
- `0 <= gem[i] <= 10^3`
52+
- `0 <= operations.length <= 10^4`
53+
- `operations[i].length == 2`
54+
- `0 <= operations[i][0], operations[i][1] < gem.length`
55+
56+
## 解法
57+
58+
<!-- 这里可写通用的实现逻辑 -->
59+
60+
<!-- tabs:start -->
61+
62+
### **Python3**
63+
64+
<!-- 这里可写当前语言的特殊实现逻辑 -->
65+
66+
```python
67+
68+
```
69+
70+
### **Java**
71+
72+
<!-- 这里可写当前语言的特殊实现逻辑 -->
73+
74+
```java
75+
76+
```
77+
78+
### **...**
79+
80+
```
81+
82+
```
83+
84+
<!-- tabs:end -->

lcp/LCP 51. 烹饪料理/README.md

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# [LCP 51. 烹饪料理](https://leetcode.cn/problems/UEcfPD)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
欢迎各位勇者来到力扣城,城内设有烹饪锅供勇者制作料理,为自己恢复状态。
8+
9+
勇者背包内共有编号为 `0 ~ 4` 的五种食材,其中 `materials[j]` 表示第 `j` 种食材的数量。通过这些食材可以制作若干料理,`cookbooks[i][j]` 表示制作第 `i` 种料理需要第 `j` 种食材的数量,而 `attribute[i] = [x,y]` 表示第 `i` 道料理的美味度 `x` 和饱腹感 `y`
10+
11+
在饱腹感不小于 `limit` 的情况下,请返回勇者可获得的最大美味度。如果无法满足饱腹感要求,则返回 `-1`
12+
13+
**注意:**
14+
15+
- 每种料理只能制作一次。
16+
17+
**示例 1:**
18+
19+
> 输入:`materials = [3,2,4,1,2]` >`cookbooks = [[1,1,0,1,2],[2,1,4,0,0],[3,2,4,1,0]]` >`attribute = [[3,2],[2,4],[7,6]]` >`limit = 5`
20+
>
21+
> 输出:`7`
22+
>
23+
> 解释:
24+
> 食材数量可以满足以下两种方案:
25+
> 方案一:制作料理 0 和料理 1,可获得饱腹感 2+4、美味度 3+2
26+
> 方案二:仅制作料理 2, 可饱腹感为 6、美味度为 7
27+
> 因此在满足饱腹感的要求下,可获得最高美味度 7
28+
29+
**示例 2:**
30+
31+
> 输入:`materials = [10,10,10,10,10]` >`cookbooks = [[1,1,1,1,1],[3,3,3,3,3],[10,10,10,10,10]]` >`attribute = [[5,5],[6,6],[10,10]]` >`limit = 1`
32+
>
33+
> 输出:`11`
34+
>
35+
> 解释:通过制作料理 0 和 1,可满足饱腹感,并获得最高美味度 11
36+
37+
**提示:**
38+
39+
- `materials.length == 5`
40+
- `1 <= cookbooks.length == attribute.length <= 8`
41+
- `cookbooks[i].length == 5`
42+
- `attribute[i].length == 2`
43+
- `0 <= materials[i], cookbooks[i][j], attribute[i][j] <= 20`
44+
- `1 <= limit <= 100`
45+
46+
## 解法
47+
48+
<!-- 这里可写通用的实现逻辑 -->
49+
50+
<!-- tabs:start -->
51+
52+
### **Python3**
53+
54+
<!-- 这里可写当前语言的特殊实现逻辑 -->
55+
56+
```python
57+
58+
```
59+
60+
### **Java**
61+
62+
<!-- 这里可写当前语言的特殊实现逻辑 -->
63+
64+
```java
65+
66+
```
67+
68+
### **...**
69+
70+
```
71+
72+
```
73+
74+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# [LCP 52. 二叉搜索树染色](https://leetcode.cn/problems/QO5KpG)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
欢迎各位勇者来到力扣城,本次试炼主题为「二叉搜索树染色」。
8+
9+
每位勇士面前设有一个**二叉搜索树**的模型,模型的根节点为 `root`,树上的各个节点值均不重复。初始时,所有节点均为蓝色。现在按顺序对这棵二叉树进行若干次操作, `ops[i] = [type, x, y]` 表示第 `i` 次操作为:
10+
11+
- `type` 等于 0 时,将节点值范围在 `[x, y]` 的节点均染蓝
12+
- `type` 等于 1 时,将节点值范围在 `[x, y]` 的节点均染红
13+
14+
请返回完成所有染色后,该二叉树中红色节点的数量。
15+
16+
**注意:**
17+
18+
- 题目保证对于每个操作的 `x``y` 值定出现在二叉搜索树节点中
19+
20+
**示例 1:**
21+
22+
> 输入:`root = [1,null,2,null,3,null,4,null,5], ops = [[1,2,4],[1,1,3],[0,3,5]]`
23+
>
24+
> 输出:`2`
25+
>
26+
> 解释:
27+
> 第 0 次操作,将值为 2、3、4 的节点染红;
28+
> 第 1 次操作,将值为 1、2、3 的节点染红;
29+
> 第 2 次操作,将值为 3、4、5 的节点染蓝;
30+
> 因此,最终值为 1、2 的节点为红色节点,返回数量 2
31+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2052.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E6%9F%93%E8%89%B2/images/1649833948-arSlXd-image.png)
32+
33+
**示例 2:**
34+
35+
> 输入:`root = [4,2,7,1,null,5,null,null,null,null,6]`
36+
> `ops = [[0,2,2],[1,1,5],[0,4,5],[1,5,7]]`
37+
>
38+
> 输出:`5`
39+
>
40+
> 解释:
41+
> 第 0 次操作,将值为 2 的节点染蓝;
42+
> 第 1 次操作,将值为 1、2、4、5 的节点染红;
43+
> 第 2 次操作,将值为 4、5 的节点染蓝;
44+
> 第 3 次操作,将值为 5、6、7 的节点染红;
45+
> 因此,最终值为 1、2、5、6、7 的节点为红色节点,返回数量 5
46+
> ![image.png](https://fastly.jsdelivr.net/gh/doocs/leetcode@main/lcp/LCP%2052.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E6%9F%93%E8%89%B2/images/1649833763-BljEbP-image.png)
47+
48+
**提示:**
49+
50+
- `1 <= 二叉树节点数量 <= 10^5`
51+
- `1 <= ops.length <= 10^5`
52+
- `ops[i].length == 3`
53+
- `ops[i][0]` 仅为 `0` or `1`
54+
- `0 <= ops[i][1] <= ops[i][2] <= 10^9`
55+
- `0 <= 节点值 <= 10^9`
56+
57+
## 解法
58+
59+
<!-- 这里可写通用的实现逻辑 -->
60+
61+
<!-- tabs:start -->
62+
63+
### **Python3**
64+
65+
<!-- 这里可写当前语言的特殊实现逻辑 -->
66+
67+
```python
68+
69+
```
70+
71+
### **Java**
72+
73+
<!-- 这里可写当前语言的特殊实现逻辑 -->
74+
75+
```java
76+
77+
```
78+
79+
### **...**
80+
81+
```
82+
83+
```
84+
85+
<!-- tabs:end -->
Loading
Loading

lcp/LCP 53. 守护太空城/README.md

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# [LCP 53. 守护太空城](https://leetcode.cn/problems/EJvmW4)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
各位勇者请注意,力扣太空城发布陨石雨红色预警。
8+
9+
太空城中的一些舱室将要受到陨石雨的冲击,这些舱室按照编号 `0 ~ N` 的顺序依次排列。为了阻挡陨石损毁舱室,太空城可以使用能量展开防护屏障,具体消耗如下:
10+
11+
- 选择一个舱室开启屏障,能量消耗为 `2`
12+
- 选择相邻两个舱室开启联合屏障,能量消耗为 `3`
13+
- 对于已开启的**一个**屏障,**多维持一时刻**,能量消耗为 `1`
14+
15+
已知陨石雨的影响范围和到达时刻,`time[i]``position[i]` 分别表示该陨石的到达时刻和冲击位置。请返回太空舱能够守护所有舱室所需要的最少能量。
16+
17+
**注意:**
18+
19+
- 同一时间,一个舱室不能被多个屏障覆盖
20+
- 陨石雨仅在到达时刻对冲击位置处的舱室有影响
21+
22+
**示例 1:**
23+
24+
> 输入:`time = [1,2,1], position = [6,3,3]`
25+
>
26+
> 输出:`5`
27+
>
28+
> 解释:
29+
> 时刻 1,分别开启编号 3、6 舱室的屏障,能量消耗 2\*2 = 4
30+
> 时刻 2,维持编号 3 舱室的屏障,能量消耗 1
31+
> 因此,最少需要能量 5
32+
33+
**示例 2:**
34+
35+
> 输入:`time = [1,1,1,2,2,3,5], position = [1,2,3,1,2,1,3]`
36+
>
37+
> 输出:`9`
38+
>
39+
> 解释:
40+
> 时刻 1,开启编号 1、2 舱室的联合屏障,能量消耗 3
41+
> 时刻 1,开启编号 3 舱室的屏障,能量消耗 2
42+
> 时刻 2,维持编号 1、2 舱室的联合屏障,能量消耗 1
43+
> 时刻 3,维持编号 1、2 舱室的联合屏障,能量消耗 1
44+
> 时刻 5,重新开启编号 3 舱室的联合屏障,能量消耗 2
45+
> 因此,最少需要能量 9
46+
47+
**提示:**
48+
49+
- `1 <= time.length == position.length <= 500`
50+
- `1 <= time[i] <= 5`
51+
- `0 <= position[i] <= 100`
52+
53+
## 解法
54+
55+
<!-- 这里可写通用的实现逻辑 -->
56+
57+
<!-- tabs:start -->
58+
59+
### **Python3**
60+
61+
<!-- 这里可写当前语言的特殊实现逻辑 -->
62+
63+
```python
64+
65+
```
66+
67+
### **Java**
68+
69+
<!-- 这里可写当前语言的特殊实现逻辑 -->
70+
71+
```java
72+
73+
```
74+
75+
### **...**
76+
77+
```
78+
79+
```
80+
81+
<!-- tabs:end -->

0 commit comments

Comments
 (0)